.net - 如何在 VB.net 中删除 .Sort 之前的引号

标签 .net vb.net string sorting string-comparison

我正在尝试按字母顺序对项目进行排序,并将它们排序放入新的文本框中。除了尝试对引号进行异常(exception)处理(因为它们出现在字母之前)之外,我已经把所有内容都记录下来了。到目前为止我已经

Dimholder as List(Of Strings) = New List(Of String)'保存我的值 Dim input as List(Of RichTextBox) = New List(Of RichTextBox)'其中输入文本

For i As Integer = 0 to input.Count - 1
   holder.Add(input.ElementAt(i))
Next
  holder.Sort()
For i As Integer = 0 to holder.Count - 1
   txtResult.Text = txtResult.Text + vbCrLf + holder(i)
Next

如何忽略可能输入的引号?我还需要将信息输出到已排序的文本框中,但将引号放在已排序的字符串中。

最佳答案

只需实现您自己的 comparer 并使用 List.Sort() 采用自定义比较器的方法重载。

一个简短的例子:

Public NotInheritable Class MyComparer : Implements IComparer(Of String)

    Public Function Compare(ByVal a As String, ByVal b As String) As Integer _
    Implements IComparer(Of String).Compare

        a = a.Trim({"'"c, ControlChars.Quote})
        b = b.Trim({"'"c, ControlChars.Quote})

        Return New CaseInsensitiveComparer().Compare(a, b)

    End Function

End Class

用法:

Dim list As New List(Of String) From {"'b'", "''''a'", """d""", "c"}
list.Sort(New MyComparer)

关于.net - 如何在 VB.net 中删除 .Sort 之前的引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36137843/

相关文章:

.net - 持久打印机设置

c# - Windows 应用程序从包含 XML 数据的网站获取 XML 数据

c# - 这是我的 child 吗?

c# - 如何在不同进程上按下按钮 (nunit.exe)

c - 从 fgets() 输入中删除尾随换行符

java - 删除字符串中数字后面的任何内容

string - 使用循环将变量列表与文件名串在一起

c# - 检测添加到 ComboBox 的项目的事件

vb.net - 在 VB.Net 中将位写入二进制文件

sql-server - 启动时在 VB.NET 应用程序中选择连接字符串