VB.net 尝试仅在第一和第二斜杠之间获取文本

VB.net Trying to get text between first and second slashs only

我正在尝试检索第一个和第二个反斜杠之间文本的值...但我的编码技能已使我走到这一步,但没有进一步。

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Dim TEST As String = "ONE\TWO\TRHREE\FOR\FIVE"
    Dim splitted = TEST.Split("\"c)
    Dim values = splitted.Skip(1).Take(splitted.Length - 2).ToArray()
    MsgBox(values)
End Sub

如果您想要 "Two" 作为结果,这应该是最简单的方法:

Dim allToken As String() = "ONE\TWO\TRHREE\FOR\FIVE".Split("\"c)
Dim relevantPart = allToken.Skip(1).Take(1)
Dim result As String = String.Concat(relevantPart) ' "Two"

如果您不想要单个字符串而是 String() 使用 ToArray:

Dim result As String() = relevantPart.ToArray()

旁注:你不能直接输出数组,你可以使用 String.Join:

MsgBox(String.Join(", ", result)) ' f.e. comma separated

使用正则表达式

Dim TEST as String = "ONE\TWO\TRHREE\FOR\FIVE"
Dim matches As MatchCollection = Regex.Matches(TEST, "\(.|\n)*?\", RegexOptions.IgnoreCase)

现在,如果您希望这些值出现在消息框中

For Each ma As Match In matches
    MsgBox(ma.ToString.Trim({"\"c}))
Next

这将使您同时获得 "TWO" 和 "FOR"。如果您只想要 "TWO",那么 matches(0) 就是您所需要的。

或者,如果您只想在一行中将匹配项放入数组中,则将数组的每个值放在一个消息框中:

Dim values = Regex.Matches(TEST, "\(.|\n)*?\").Cast(Of Match)().[Select](Function(m) m.Value).ToArray()
MsgBox(String.Join(", ", values))

使用拆分功能。它将拆分一个字符串并将分隔的值存储在一个数组中。这是这里所有答案中最简单的,也可能是最正确的方法。

这是 VB 的实现方式:

Dim s() As String = Split("ONE\TWO\TRHREE\FOR\FIVE", "\")
MessageBox.Show(s(1))

这是 .NET 的实现方式:

Dim mainString As String = "ONE\TWO\TRHREE\FOR\FIVE"
Dim s() As String = mainString.Split("\")
MessageBox.Show(s(1))