...databox.text (以下のコード例から) には、プログラムで以前に入力された結合された単語 (ドメイン名) の大きなリストが含まれています。各行に 1 つずつあります。この例では、最初は次のようになります。
thepeople.com
truehistory.com
workhorse.com
whatever.com
neverchange.com
...
次のコードは、databox 内のテキストを tlistfiltered.txt に保存し、tlistfiltered.txt を検索して、リスト "arr()" 内の項目のいずれかを含むすべての行を取得し、結果を listview(lv) に入力します。これは問題なく動作しますが、結果は次のようになります。
thepeople.com
truehistory.com
neverchange.com
...
しかし、必要なのは「見つかった文字列」です( arr()list から適切なケースになるため、結果は次のようになります。
thePeople.com
trueHistory.com
neverChange.com
これがコードです....
Dim s As String = databox.Text
File.WriteAllText(dloc & "tlistfiltered.txt", s)
databox.Clear()
Dim text2() As String = System.IO.File.ReadAllLines(dloc & "tlistfiltered.txt")
Dim arr() As String = {"people", "history", "change"}
For index1 = 0 To arr.GetUpperBound(0)
Dim YesLines() As String = Array.FindAll(text2, Function(str As String)
Return str.Contains(arr(index1))
End Function).ToArray
databox.Visible = True
For index2 = 0 To YesLines.GetUpperBound(0)
Dim match As String = (YesLines(index2)) & vbCrLf
databox.AppendText(match)
Next
Next
s = databox.Text
File.WriteAllText(dloc & "tlistfilteredfinal.txt", s)
databox.Clear()
domains = (From line In File.ReadAllLines(dloc & "tlistfilteredfinal.txt") Select New ListViewItem(line.Split)).ToArray
lv.Items.Clear()
My.Computer.FileSystem.DeleteFile(dloc & "tlistfiltered.txt")
My.Computer.FileSystem.DeleteFile(dloc & "tlistfilteredfinal.txt")
BackgroundWorker1.RunWorkerAsync()
End Sub
その場でこれを行う方法はありますか?StrConv などを試しましたが、行全体を適切な大文字に変換するだけです。行内に含まれる「見つかった」単語のみを変換したい....
編集:
@soohooniganの答えを見た後、編集しました
databox.Visible = True
For index2 = 0 To YesLines.GetUpperBound(0)
Dim match As String = (YesLines(index2)) & vbCrLf
databox.AppendText(match)
Next
Next
これに:
databox.Visible = True
For index2 = 0 To YesLines.GetUpperBound(0)
Dim match As String = (YesLines(index2)) & vbCrLf
Dim myTI As System.Globalization.TextInfo = New System.Globalization.CultureInfo("en-US", False).TextInfo
If match.Contains(arr(index1)) Then
match = match.Replace(arr(index1), myTI.ToTitleCase(arr(index1)))
'StrConv(match, vbProperCase)
databox.AppendText(match)
End If
Next
そして望ましい結果を得ました!