从字符串中提取特定文本

时间:2012-03-14 13:11:05

标签: c# regex string

这是字符串:“ - random text- $ 0.15 USD”

我想要提取的是“0.15”,不包括$和USD。因此,文本只包含“0.15”,其他所有单词都已消失。

我该怎么做?

提前致谢:)

8 个答案:

答案 0 :(得分:4)

使用正则表达式

string str = "-random text- $0.15 USD";

Regex rx = new Regex(@"(?<=\$)[0-9]+\.[0-9]+(?= USD$)");
var res = rx.Match(str);

if (res.Success) {
    var res2 = res.ToString();
}

“主要”部分为[0-9]+\.[0-9]+(一个或多个数字后跟.后跟一个或多个数字)。此表达式必须遵循$符号(?<=\$),并且必须后跟USDUSD之前有一个空格)加上字符串(?= USD$)的结尾。

在线测试:http://regexr.com?30aot

答案 1 :(得分:2)

var result = Regex.Match("-random text- $0.15 USD",   @"\$([ \d\.]+)USD")
                  .Groups[1].Value;

答案 2 :(得分:1)

使用正则表达式。类似的东西:

\d+\.*\d+

答案 3 :(得分:1)

正则表达式是你的朋友。

使用RegEx类(System.Text.RegularExpressions),使用([\d\.]+)模式提取数字+小数位。

答案 4 :(得分:1)

你可以做这样的事情

    string str = "-random text- $0.15 USD";
    int startIndex = str.IndexOf("$")+1;
    int length = str.IndexOf("USD", startIndex) - startIndex;
    string output = str.Substring(startIndex, length).Trim();

答案 5 :(得分:1)

为什么在可以使用内置String方法时使用正则表达式?

 int startIndex = myRandomString.LastIndexOf("$") + 1;
 int lastIndex = myRandomString.LastIndexOf("U") - startIndex;

 string price = random.Substring(startIndex, lastIndex);

答案 6 :(得分:1)

试试这个:

string sentence = "-random text- $0.15 USD";
string[] doubleArray = System.Text.RegularExpressions.Regex.Split(sentence, @"[^0-9\.]+")
                       .Where(c => c != "." && c.Trim() != "").ToArray();
if (doubleArray.Count() > 0)
{
     double value = double.Parse(doubleArray[0]);
}

output:
.15

答案 7 :(得分:0)

您是否考虑过使用regex

Regex.Match("0.15");