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