我在 StringBuilder 对象中有一段文本。我需要用另一个替换一个子串。 StringBuilder Replace 方法可以做到这一点,但它会替换子字符串的每个实例,而我只想替换第一个找到的实例。有没有办法告诉 StringBuilder 只做一个替换?
我确信我可以自己编写代码,我只是想知道是否有一种内置的方法可以实现我目前所缺少的。
最佳答案
是的,但不是直接的。 Replace
的四个重载中的两个对 StringBuilder
内容的子字符串起作用,但您需要找到第一次出现的位置才能起作用。
这是你想要的:
http://msdn.microsoft.com/en-us/library/y1bxd041.aspx
编辑:不幸的是,如果不在 StringBuilder
上调用 ToString
,我看不到找到第一次出现的方法。
(对 VB 感到抱歉,我打开了一个 VB 项目。)
Dim orig As String = "abcdefgabcdefg"
Dim search As String = "d"
Dim replace As String = "ZZZ"
Dim sb As New StringBuilder(orig)
Dim firstOccurrence = sb.ToString().IndexOf(search)
If firstOccurrence > -1 Then
sb.Replace(search, replace, firstOccurrence, search.Length)
End If
关于.net - StringBuilder 可以替换一个实例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2364205/