如果我有一个字符串
10,000kg crane,21
,
我应该如何去除所有逗号,但最后一个得到
10000kg crane,21
?
我认为这是一个正则表达式问题。
另一种方法,它的执行速度可能比 RegEx 解决方案快得多:
Dim s As String = "10,000kg crane,21"
Dim result As String = New StringBuilder(s).Replace(",", String.Empty, 0,
s.LastIndexOf(","c)).ToString()
要点是它将所有出现的“,”替换为第一个字符和最后一个“,”的索引之间的空字符串。
我做了一些基准测试,分别运行了 1,000,000 次和建议的 RegEx 解决方案;在我的笔记本电脑上,无需编译 RegEx,此解决方案的速度大约快七 (7) 倍。如果你编译 RegEx,它的速度仍然是原来的两倍。
无正则表达式方法:
Dim text = "10,000kg crane,21"
Dim parts = text.Split(","c).Reverse
Dim result = String.Join("", parts.Skip(1).Reverse) & "," & parts.First
一种更丑陋但有效的替代方法:
Dim strResult As String = Replace(Mid(strTarget, 1, strTarget.LastIndexOf(",")), ",", String.Empty) & _
Microsoft.VisualBasic.Right(strTarget, Len(strTarget) - strTarget.LastIndexOf(","))