在大字符串中查找浮点数

本文关键字:查找 浮点数 字符串 | 更新日期: 2023-09-27 18:02:53

我有一个大字符串,在字符串中有一系列浮点数。一个典型的字符串是Item X $4.50 Description of item 'r'n'r'n Item Z $4.75...,这个文本真的没有押韵或原因。我已经有了最低的值,我需要找到字符串中的所有值。如果是10.00,它会找到小于等于10.05的所有值。我会假设会涉及某种正则表达式来查找值,然后我可以将它们放入数组中,然后对它们进行排序。

所以它会像这样找到这些值中哪个符合我的标准。

int [] array;
int arraysize;
int lowvalue;
int total;
for(int i = 0; i<arraysize; ++i)
{
    if(array[i] == lowvalue*1.05) ++total;
}

我的问题是在数组中获得这些值。我读过这篇文章,但是d+并不真正适用于浮点数

在大字符串中查找浮点数

你应该使用RegEx:

Regex r = new RegEx("[0-9]+'.[0-9]+");
Match m = r.Match(myString);

差不多。然后你可以使用:

float f = float.Parse(m.value);

如果你需要一个数组:

MatchCollection mc = r.Matches(myString);
string[] myArray = new string[mc.Count];
mc.CopyTo(myArray, 0);

编辑

我刚刚为你创建了一个小的示例应用程序Joe。我编译了它,它在我的机器上使用你的问题的输入行工作得很好。如果你有问题,发布你的InputString,这样我就可以用它来尝试。下面是我写的代码:

static void Main(string[] args)
{
    const string InputString = "Item X $4.50 Description of item 'r'n'r'n Item Z $4.75";
    var r = new Regex(@"[0-9]+'.[0-9]+");
    var mc = r.Matches(InputString);
    var matches = new Match[mc.Count];
    mc.CopyTo(matches, 0);
    var myFloats = new float[matches.Length];
    var ndx = 0;
    foreach (Match m in matches)
    {
        myFloats[ndx] = float.Parse(m.Value);
        ndx++;
    }
    foreach (float f in myFloats)
        Console.WriteLine(f.ToString());
    // myFloats should now have all your floating point values
}