从字符串中提取特定文本

本文关键字:文本 提取 字符串 | 更新日期: 2023-09-27 18:27:50

这是字符串:"-随机文本-$0.15 USD"

我想提取的是后面的"0.15",不包括美元和美元。因此,文本将只包含"0.15",其他所有单词都将消失。

我该怎么做?

提前感谢:)

从字符串中提取特定文本

使用正则表达式

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]+(一个或多个数字后面跟着.,后面跟着一个或几个数字)。此表达式必须跟在$符号(?<='$)后面,并且后面必须跟USD(在USD之前有一个空格)加上字符串(?= USD$)的末尾。

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

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

使用正则表达式。类似于:

'd+'.*'d+

正则表达式是您的朋友。

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

您可以执行类似的操作

    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();

试试这个:

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

既然可以使用内置的String方法,为什么要使用正则表达式?

 int startIndex = myRandomString.LastIndexOf("$") + 1;
 int lastIndex = myRandomString.LastIndexOf("U") - startIndex;
 string price = random.Substring(startIndex, lastIndex);

您想过使用regex吗?

Regex.Match("0.15");