可以使用前瞻断言通过正则表达式完成.您想要替换后面至少有一个逗号的逗号.这个前瞻失败的唯一逗号是最后一个.
试试这个:
s = Regex.Replace(s, ",(?=.*?,)", "")
Run Code Online (Sandbox Code Playgroud)
看到它在线工作:ideone
另一种方法,其执行速度可能比RegEx解决方案快得多:
Dim s As String = "10,000kg crane,21"
Dim result As String = New StringBuilder(s).Replace(",", String.Empty, 0,
s.LastIndexOf(","c)).ToString()
Run Code Online (Sandbox Code Playgroud)
要点是它将在第一个字符和最后一个","的索引之间用空字符串替换所有出现的",".
我做了一些运行此基准测试的基准测试,建议的RegEx解决方案各占100,000次; 在我的笔记本电脑上,没有编译RegEx,这个解决方案快了大约七(7)倍.如果你编译RegEx,它的速度仍然快两倍.