2016-03-21 6 views
2

アルファベット順に項目を並べ替えて並べ替えて、新しいテキストボックスに配置しようとしています。手紙の前に現れるので、私は引用符のための例外を作ることを試みることを除いてすべてを持っている。これまでのところ、私は入力することができ、引用符を無視するにはどうすればよいVB.netで.Sortの前に引用符を削除する方法

Dim holder as List(Of Strings) = New List(Of String)'holds my values Dim input as List(Of RichTextBox) = New List(Of RichTextBox)'where text is input

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 

はありますか?また、ソートされたテキストボックスに情報を出力する必要がありますが、ソートされた文字列には引用符が戻されます。

+1

'ホルダー= Holder.Select(機能(S)s.Replace( "" ""、 ""))ToListメソッド( ) ' – Plutonix

+0

私はプログラミングが初めてで、これは私の最初の独立したプロジェクトです。どこにその行を置くのですか? –

+1

彼らはすべてそれを持っている場合、並べ替えを妨げることはありません。そうでなければ、ソートの前に '.Sort'の前に引用符を削除したい場合 – Plutonix

答えて

3

だけ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) 
+0

私は学習学生ですから、ここを通ってプロセスを説明してもらえますか? –

+2

「IComparer」は、2つのオブジェクトをどのようにして比較するかを調べる方法を.NETに教えるインターフェイスです。オブジェクトを比較することはリストをソートする重要な部分です。カスタムICompare実装を使用して、思うような方法でリストをソートすることができます。基本的に、比較者は2つの文字列を比較し、一時的に引用符を取り除き、それらの結果を互いに比較します。これはIComparerを使用する素晴らしい例ですが、非常に大きなリストをソートするときには、常に新しい文字列を作成するため、重大なパフォーマンス上の問題が発生することに注意してください。 –

関連する問題