【发布时间】:2015-02-02 00:56:23
【问题描述】:
我正在尝试删除给定字符串末尾的数字。
AB123 -> AB
123ABC79 -> 123ABC
我尝试过这样的事情;
string input = "123ABC79";
string pattern = @"^\\d+|\\d+$";
string replacement = "";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(input, replacement);
然而替换字符串与输入相同。我对正则表达式不是很熟悉。 我可以简单地将字符串拆分为一个字符数组,然后循环它来完成它,但这并不是一个好的解决方案。删除仅在字符串末尾的数字有什么好的做法?
提前致谢。
【问题讨论】:
-
开发者有问题。他知道他可以通过正则表达式来解决它。现在他有两个问题。
-
这句话我听过很多遍了,我明白它的意思。但是对于这个问题,你会建议什么而不是正则表达式?循环遍历字符数组感觉更脏。
-
也许感觉更脏,但在引擎盖下,RegEx 什么也不做。并且维护一个(可能是复杂的)正则表达式比在一个简单的循环中表达相同的要脏得多。我不想说:“永远不要使用 RegEx。”,但你应该只在你真的需要时才使用它们,也可以添加一个带有 RegEx 解释的大注释,因为它往往是 write只有 代码。啊,在我忘记之前:为该方法编写一个单元测试,该方法将使用许多不同的字符串(可能通过
TestCaseSource)来处理,以确保您将来不会破坏任何东西。 -
感谢 Oliver 的澄清,尤其是单元测试建议非常中肯。