我对vb.net很陌生,如果分隔符超过一个字符,我就不明白为什么分割的工作方式不同。
我在.net小提琴上试过这个,我对结果感到惊讶:
Dim Txt as string = "123_|_ABC_|_sd"
Dim c() as string
c= Txt.Split("_|_")
console.WriteLine(c.length)
For i = 0 to c.length -1
console.WriteLine(c(i))
Next
Txt = "123|ABC|sd"
c= Txt.Split("|")
console.WriteLine(c.length)
For i = 0 to c.length -1
console.WriteLine(c(i))
Next
结果是,代码的第一部分:
5
123
|
ABC
|
sd
代码的第二部分:
3
123
ABC
sd
我的问题是: 为什么会这样? 有没有办法用多个字符的分隔符获取第二部分代码的结果?
答案 0 :(得分:2)
您可以使用模式
尝试Regex.Split()
"_\|_"
示例:
Imports System.Text.RegularExpressions
Module Module1
Sub Main()
Dim Txt As String = "123_|_ABC_|_sd"
Dim c() As String
c = Regex.Split(Txt, "_\|_")
For i = 0 To c.Length - 1
Console.WriteLine(c(i))
Next
Console.ReadLine()
End Sub
End Module
结果:
123
ABC
sd
答案 1 :(得分:2)
.NET String.Split()方法接受两个参数:
所以,这行代码:
c= Txt.Split("_|_")
不会说"使用 | 作为分隔符"。相反,它说"使用_或|或_作为分隔符"。
获取您正在寻找的行为的最直接方法是使用Microsoft.VisualBasic命名空间中的String类。这经常被嘲笑,但有些情况下它只是比相应的.NET类做得更好。
因此,导入Microsoft.VisualBaisc命名空间,然后......
c = Split(Txt,"_|_")