Alan的回答是正确的。使用他的模式,我们可以使用LINQ来过滤Split
结果,或者我们可以按照他的建议使用Matches
。
Dim input As String = "Islands of Adventure ""Disney Land"" Universal Studios"
Dim pattern As String = "(?<Value>[^""\s]+)|""(?<Value>[^""]+)"""
Dim result = Regex.Split(input, pattern).Where(Function(s) s.Trim <> "")
Console.WriteLine("Split Result:")
For Each s In result
Console.WriteLine(s)
Next
Console.WriteLine("Matches:")
For Each m As Match In Regex.Matches(input, pattern)
Console.WriteLine(m.Groups("Value").Value)
Next
''# to get string arrays use either of these instead
Dim splitArray As String() = Regex.Split(input, pattern) _
.Where(Function(s) s.Trim <> "") _
.ToArray()
Dim matchArray As String() = Regex.Matches(input, pattern).Cast(Of Match) _
.Select(Function(m) m.Groups("Value").Value) _
.ToArray()
非常感谢你。 – 2010-03-20 21:23:23
@Cj很高兴帮助:) – 2010-03-20 22:08:17