/ /文字列の「[」と「]」内の部分を取得する方法(奇妙な動作)-vb.net、コンソールアプリケーション

どのように文字列の "["と "]"内の部分を取得する(奇妙な動作) - vb.net、console-application

間の文字列の一部を取得しようとしています [ そして ]。これまでのところ私はこれを持っています:

For Each a As String In CType(TabControl1.SelectedTab.Controls.Item(0),
RichTextBox).Text.Split(System.Environment.NewLine())
If (a.Contains("print ")) Then
Dim sData As String
sData = a.Substring(6)
Dim i, j As Integer
i = sData.IndexOf("[") + "[".Length
j = sData.IndexOf("]") - i
Dim sData1 As String
sData1 = sData.Substring(i, j)
Console.WriteLine(sData1)
End If
Next

ただし、これがある場合:

print [Hello world!]
print [What"s up world?]

それから出力はこれです:

Hello world!

ただし、必要な出力は次のとおりです。

Hello world!
What"s up world

つまり初回以降は何も表示されません print 見つかった。

それで、なぜそれが起こっているのですか、どうすれば修正できますか?

回答:

回答№1は1

あなたは使用していません 厳格なオプション その結果、あなたはそれを言われません Split(System.Environment.NewLine()) CRLFをCRに切り捨てています。 RichTextBoxの行はLFで区切られます。

簡単な解決策は、 .Lines RTBのプロパティ:

For Each a As String In CType(TabControl1.SelectedTab.Controls.Item(0), RichTextBox).Lines

回答№2の場合は0

Uは正規表現を使用できますが、これは非正規表現ソリューションです

"U can also use a loop(This is a working solution)

Dim mystring = "print [Hello world]" + Environment.NewLine + "Print [What"s up world?]" + ........
For Each line In mystring.Split(New String() {Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)

Dim hloWorld = line.Split("[")(1)
Dim result = hloWorld.Replace("]", "")
Dim finalResult = result + Environment.NewLine
"""Do what u wanna do with ur final result
Next