【问题标题】:Extract specific text from a string从字符串中提取特定文本
【发布时间】:2012-03-30 22:53:14
【问题描述】:

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

我要提取的是后面的“0.15”,不包括$和USD。所以文本将只包含“0.15”,而所有其他单词都消失了。

我该怎么做?

提前致谢:)

【问题讨论】:

  • 这取决于随机文本中是否有句点和数字。但是0.15后面的文字,是固定的吗?
  • @xanatos 那太容易了。 return "0.15"; 我认为这不是 OP 想要的。
  • 检查this
  • @MrLister 很清楚他想要什么,也很清楚他没有花太多时间描述它。

标签: c# regex string


【解决方案1】:

使用正则表达式

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]+(一位或多位数字后跟.,后跟一位或多位数字)。此表达式必须跟在$ 符号(?&lt;=\$) 之后,并且必须跟在USDUSD 之前有一个空格)加上字符串结尾(?= USD$)

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

【讨论】:

  • 这很好用,谢谢!编辑:我还有另一个问题,假设我将在富文本框中复制很多字符串,那么如何在其中只获取“0.15”?请注意,“0.15”不是固定值。并感谢大家的投入,感谢。我对字符串很陌生,我看过正则表达式但不知道如何使用它:/
【解决方案2】:
var result = Regex.Match("-random text- $0.15 USD",   @"\$([ \d\.]+)USD")
                  .Groups[1].Value;

【讨论】:

    【解决方案3】:

    使用正则表达式。比如:

    \d+\.*\d+
    

    【讨论】:

      【解决方案4】:

      正则表达式是你的朋友。

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

      【讨论】:

        【解决方案5】:

        你可以这样做

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

        【讨论】:

        • 可能是,但为此我在此处的 $ 符号后查找美元 - str.IndexOf("USD", startIndex) 但此代码需要额外检查长度。
        • 如果随机文本包含$ 符号,这将中断。
        【解决方案6】:

        试试这个:

        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】:

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

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

          【讨论】:

            【解决方案8】:

            你有没有想过使用regex

            Regex.Match("0.15");

            【讨论】:

            • 如果0.15 是固定的。否则,您可以从这里获得其他很好的答案。
            • 由于您的锚点,它会在示例字符串中找到“0.15”。
            • -1 这是一个糟糕的问题,没有付出任何努力,但这显然不是被问到的。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2022-09-23
            • 1970-01-01
            • 2020-04-26
            • 2021-04-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多