【问题标题】:Remove several dots/commas in string from every decimal number从每个十进制数中删除字符串中的几个点/逗号
【发布时间】:2023-03-03 12:42:01
【问题描述】:

如何检查数字中的逗号?

假设我有一个字符串,它代表一个多项式项,看起来像这样

string x = "x+1+5,54";

现在用户想要输入并添加一个逗号,然后将是“x1+5,54” 这不再是一个数字了。如何使用 if 进行检查?

如果最后一个数字已经包含逗号,则不要附加另一个。

【问题讨论】:

  • 您可以使用正则表达式 stackoverflow.com/questions/11009320/… 如果您使用 ',' 作为小数分隔符,只需将正则表达式从示例更改为 ^([-+/*]\d+(,\d+)?)*
  • 我建议寻找一个可以从字符串中解析公式来验证它们的第三方库,而不是自己实现它。
  • @DzianisKarpuk 如何使用这个正则表达式来过滤逗号?
  • 如果字符串中的某些字符使其对您的目的无效,那么您确定哪些字符无效的标准是什么确切?删除字符很容易。知道用户不打算成为合法号码的一部分,不是那么多。请改进您的问题,以便您清楚准确地解释这里的规则是什么,以及具体您在实施时遇到了什么问题。
  • 您应该使用生成表达式树的表达式解析器。这样,您可以单独验证每个操作数。这是解析或计算方程的最佳选择。

标签: c# .net string


【解决方案1】:

使用正则表达式。

        if (Regex.IsMatch(a, @"^((\d+,?\d*)|(\w?))([-+/]((\d+,?\d*)|(\w?)))*$"))
        {
            //correct
        }
        else
        {
            //incorrect
        }

当用户输入额外的逗号时,你会得到错误,所以你可以处理它。

【讨论】:

  • 感谢男人,这是我一直在寻找的感谢它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-21
  • 2012-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-30
相关资源
最近更新 更多