.net 如何将 stringbuilder 与字符串进行比较

mun*_*nge 2 vb.net string stringbuilder

在 vb.net(或 C#)中,我不知道如何将 stringbuilder 与字符串进行比较。我已经搜索了很多,但找不到答案。我必须编写自己的例程。没有更好的办法吗?

这不起作用:

Dim s As String = "abc"
Dim sb As New StringBuilder("abc")
If sb.Equals(s) Then
  Console.WriteLine(sb.ToString() + " DOES equal " + s)
Else
  Console.WriteLine(sb.ToString() + " does NOT equal " + s)
End If
Run Code Online (Sandbox Code Playgroud)

该代码的结果是:abc 不等于 abc

没有某种方法可以在不编写自己的例程的情况下将 stringbuilder 与 string 进行比较吗?很明显我遗漏了一些东西,因为我在任何地方都找不到这个问题。

Guf*_*ffa 5

最简单的方法是获取StringBuilder字符串的内容:

If sb.ToString() = s Then ...
Run Code Online (Sandbox Code Playgroud)

如果您想避免创建该字符串(可能是出于内存使用问题),恐怕您必须编写自己的例程来比较它们。基本上是这样的:

Public Shared Function SbEquals(sb As StringBuilder, s As String) As Boolean
  If sb.Length <> s.Length Then Return False
  For i As Integer = 0 to s.Length - 1
    If sb(i) <> s(i) Return False
  Next
  Return True
End Function
Run Code Online (Sandbox Code Playgroud)