【问题标题】:Remove all Zero at end in string using Regex使用正则表达式删除字符串末尾的所有零
【发布时间】:2023-04-04 03:17:02
【问题描述】:

只有当字符串中包含, 时,我才必须在字符串末尾删除零。我可以使用正则表达式完成以下所有操作吗? 所以

123,90 -> 123,9
123,00 -> 123,
123,0 -> 123,
123,0090 ->123,009
00,34-> 00,34
ABC -> ABC

【问题讨论】:

  • 或许,s.Contains(",") ? s.TrimEnd('0') : s

标签: .net regex string


【解决方案1】:

使用此正则表达式搜索:

(,\d*?)0+\b

并将其替换为:

$1

IdeOne Code demo

RegExStrorm Demo - 点击"Context" 标签查看结果

RegEx101 Demo

【讨论】:

  • 嘿阿努。这是完美的。但是如何调整这个表达式以从开始也删除。 00123,2500 -> 123,25
  • 嘿,但它在 0001869,0258 时中断。应为 1869,0258,但应为 0001869,0258
  • 您的问题中00,34 会发生什么?
  • 它应该显示为 ,34。但如果没有逗号,则不应更改任何内容。目前有效
【解决方案2】:

请记住,RegEx 用于测试 模式。它将返回 true 或 false,而不是对字符串本身进行任何更改。

如果要搜索字符串末尾的字符,可以使用 $ 符号来构建正则表达式

enter image description here

如果您想现场测试,请使用this tool

所以,这个 RegEx 会在每次你最后有一个 0 时返回 true,否则返回 false

0$

现在,如果您需要删除那个零,您需要执行 TRIM

"129,0".TrimEnd('0')

注意 TrimEnd 函数中的引号。这是因为此方法需要一个字符而不是字符串。

问候! 棒

【讨论】:

    【解决方案3】:
         String line = "120,90";
    
    
        String newLine = line.replaceAll("0*$", "");
    //120,9
    

    删除从字符串表达式末尾开始的任何“0”。用空格替换从字符串末尾到字符串中第一个非 0 字符的所有 0。

    【讨论】:

      【解决方案4】:

      似乎您使用, 作为数字小数分隔符。所以你可以使用double.TryParsedouble.ToString 来获得想要的结果:

      string str = "123,0090";
      double d;
      if (double.TryParse(str, out d))
          str = d.ToString();
      

      如果要确保逗号用作小数分隔符:

      if (double.TryParse(str, NumberStyles.Any, new CultureInfo("de-DE"), out d))
          str = d.ToString();
      

      如果您改用decimal.TryParse,则会保留尾随零的数量,这在这种情况下是不需要的。 Msdn“缩放因子还保留了 Decimal 数字中的任何尾随零。......可能会被 ToString 方法揭示......”

      【讨论】:

        【解决方案5】:

        要在 Javascript 中执行此操作,您可以执行以下操作:

        '0.000015000000'.replaceAll(/0*$/g, "") 
        

        返回“0.000015”

        【讨论】:

        • 这不是JS问题,它被标记为.net
        猜你喜欢
        • 2010-11-23
        • 2021-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-30
        • 1970-01-01
        • 1970-01-01
        • 2011-02-25
        相关资源
        最近更新 更多