【问题标题】:Remove numbers in specific part of string (within parentheses)删除字符串特定部分的数字(括号内)
【发布时间】:2015-04-30 07:14:07
【问题描述】:

我有一个字符串 Test123(45​​),我想删除括号内的数字。我该怎么做呢?

到目前为止,我已经尝试了以下方法:

string str = "Test123(45)";
string result = Regex.Replace(str, "(\\d)", string.Empty);

然而,这会导致结果 Test(),而它应该是 Test123()

【问题讨论】:

    标签: c# regex string replace


    【解决方案1】:

    tis 替换所有括号,用括号填充数字

    string str = "Test123(45)";
    string result = Regex.Replace(str, @"\(\d+\)", "()");
    

    【讨论】:

      【解决方案2】:
      \d+(?=[^(]*\))
      

      试试这个。与verbatinum模式一起使用@。前瞻将确保数字有)而没有(。替换为empty string

      查看演示。

      https://regex101.com/r/uE3cC4/4

      【讨论】:

      • 非常感谢,这行得通!也很棒的网站,不知道这一点。
      • @SomeGuy08:re​​gex101 未处理 .NET 特定的正则表达式风格。使用regexstorm.net/testerregexhero.net/tester
      • @SomeGuy08 .. 我会使用 ASh/fubo 的解决方案.. 它是该解决方案的简化解决方案,而且性能也非常好.. (需要的步骤非常少.. 我也不认为应该使用前瞻,除非没有实际要求)
      • 此外,这个正则表达式将捕获一个数字,即使它不在括号内:test 444)。如果在右圆括号之前跟有字母,它甚至会替换一个数字:test 444string)。如果这些情况都可以,那么我没有问题。 :)
      • 根据问题,这个正则表达式显然是错误的。它会删除所有后面没有开括号的数字。问题是关于删除括号内的数字。
      【解决方案3】:
      string str = "Test123(45)";
      string result = Regex.Replace(str, @"\(\d+\)", "()");
      

      【讨论】:

      • Regex.Replace(str, @"\(\d+\)", "()") 将适用于格式为(DigitDigitDigit) 的字符串; [结果()];如果字符串格式为(DigitSomethingDigit),则不会删除数字; [结果(DigitSomethingDigit)]
      【解决方案4】:

      你也可以这样试试:

       string str = "Test123(45)";
              string[] delimiters ={@"("};;
              string[] split = str.Split(delimiters, StringSplitOptions.None);
              var b=split[0]+"()";
      

      【讨论】:

        【解决方案5】:

        删除一个实际上是括号内的数字,但不是括号,并在其中保留不是数字的任何其他内容,C# Regex.Replace 表示 将所有带括号的子字符串与\([^()]+\) 匹配,然后删除MatchEvaluator 内的所有数字。

        这是C# sample program

        var str = "Test123(45) and More (5 numbers inside parentheses 123)";
        var result = Regex.Replace(str, @"\([^()]+\)", m => Regex.Replace(m.Value, @"\d+", string.Empty));
        // => Test123() and More ( numbers inside parentheses )
        

        要删除包含在 () 符号中的数字,ASh's \(\d+\) solution 会很好地工作:\( 匹配文字 (\d+ 匹配 1+ 个数字,\) 匹配一个文字)

        【讨论】:

          猜你喜欢
          • 2017-05-29
          • 1970-01-01
          • 1970-01-01
          • 2022-06-13
          • 2014-07-03
          • 2014-08-29
          • 1970-01-01
          相关资源
          最近更新 更多