搜索字符串百分比

时间:2014-10-14 17:06:12

标签: c# string parsing

我正在使用c#。我需要一个方法,它将一个字符串作为输入,搜索该字符串中的百分比符号,然后直接返回百分比符号前面的数字。例如"asdf sdfa asf 32% asdf"将返回32. "asdfl asfi asdf kd 34.5% adsfkjfg"将返回34.5。我知道如何找到百分比符号的索引然后循环向后搜索空格,并返回中间的所有内容。我觉得可能有一种更有效的方法。

2 个答案:

答案 0 :(得分:1)

var result = str.Split(' ')
                .Where(s => s.Contains('%'))
                .Select(s => s.Trim('%'));

<强>解释

Split将您的输入字符串转换为IEnumerable<string>Where仅选择包含搜索字符%Select的每个字符串的字符串,这样新元素不包含字符%

答案 1 :(得分:1)

您可以使用Regular Expression使用以下模式实现此目的:

(^|\s)\d+(.\d+)?(?=%)

在代码中:

var match = 
   System.Text.RegularExpressions.Regex.Match(input, @"(^|\s)\d+(.\d+)?(?=%)");

if (match.Success)
{
    string value = match.Value;
}

这是分解成碎片的模式:

(^|\s:指定模式的其余部分应该在字符串的开头或白色空间之后。因此,“Hello 3%”将匹配,但“Hello3%”将不会。

\d+ :匹配一个或多个数字。

(.\d+)? :指定如果有“”,则还应该有一个或多个十进制数字

(?=%) :用于匹配“%”的前瞻组并返回在其之前捕获的所有内容(即值)。