C# 从字符串中提取特定文本

C# 从字符串中提取特定文本,c#,regex,string,C#,Regex,String,这是字符串:“-随机文本-$0.15 USD” 我想提取的是后面的“0.15”,不包括美元和美元。因此,文本将只包含“0.15”和所有其他单词 我该怎么做呢 提前感谢:)使用正则表达式。比如: \d+\.*\d+ 你有没有想过用它 Regex.Match(“0.15”)正则表达式是您在这里的朋友 使用RegEx类(System.Text.RegularExpressions),使用([\d\.]+)模式提取数字+小数点。使用RegEx string str = "-random text- $

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

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

我该怎么做呢


提前感谢:)

使用正则表达式。比如:

\d+\.*\d+

你有没有想过用它


Regex.Match(“0.15”)

正则表达式是您在这里的朋友

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

使用RegEx

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();
}
string str=“-random text-$0.15 USD”;

Regex rx=newregex(@“(?您可以这样做

    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
方法,为什么还要使用正则表达式呢

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

 string price = random.Substring(startIndex, lastIndex);
试试这个:

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

这取决于随机文本中是否有句点和数字。但是
0.15
后面的文本是固定的吗?@xanatos这太容易了。
返回“0.15”“;
我不认为OP想要这个。检查@MrLister他想要什么很清楚,而且很清楚他没有花太多时间来描述它。如果
0.15
是固定的。否则,这里还有其他很好的答案,你可以从中得到。因为你的主播,它会找到“0.15”不在示例字符串中。-1这是一个糟糕的问题,没有付出任何努力,但这显然不是所问的问题。如果不是这样,我会在这里的$符号后面查找USD-str.IndexOf(“USD”,startIndex)但是此代码需要额外的长度检查。如果随机文本包含
$
符号,则此代码将中断。这很好,谢谢!编辑:我有另一个问题,假设我将在富格文本框中复制大量字符串,那么如何仅在其中获取“0.15”?请注意“0.15”不是固定值。谢谢大家的输入,非常感谢。我对字符串非常陌生,我看过regex,但不知道如何使用它:/
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