如果我有像
这样的字符串 10,000kg crane,21
,
我应该如何删除所有逗号,但最后要删除
10000kg crane,21
?
我认为这是一个正则表达式问题。
答案 0 :(得分:8)
可以使用lookahead assertion通过正则表达式完成。您想要替换后面至少有一个逗号的逗号。这个前瞻失败的唯一逗号是最后一个。
试试这个:
s = Regex.Replace(s, ",(?=.*?,)", "")
查看在线工作:ideone
答案 1 :(得分:5)
另一种方法,其执行速度可能比RegEx解决方案快得多:
Dim s As String = "10,000kg crane,21"
Dim result As String = New StringBuilder(s).Replace(",", String.Empty, 0,
s.LastIndexOf(","c)).ToString()
要点是它将用第一个字符和最后一个“,”的索引之间的空字符串替换所有出现的“,”。
我做了一些基准测试,每次测试the proposed RegEx solution 1,000,000次;在我的笔记本电脑上,没有编译RegEx,这个解决方案快了大约七(7)倍。如果您确实编译了RegEx,它的速度仍然快两倍。
答案 2 :(得分:1)
无正则表达式方法:
Dim text = "10,000kg crane,21"
Dim parts = text.Split(","c).Reverse
Dim result = String.Join("", parts.Skip(1).Reverse) & "," & parts.First
答案 3 :(得分:0)
一种更丑陋而又有效的替代方法:
Dim strResult As String = Replace(Mid(strTarget, 1, strTarget.LastIndexOf(",")), ",", String.Empty) & _
Microsoft.VisualBasic.Right(strTarget, Len(strTarget) - strTarget.LastIndexOf(","))