如何在VB.NET中将字符串拆分为列表或数组

7

我有一个像这样的长字符串:

"data source=qa2;initial catalog=rr;persist security info=True;user id=ka;password=lalala;Connection Timeout=60"

我希望将其分割成一个字符串列表。列表应该是这样的:

Dim list As New List(Of String)
list(0) = qa2
List(1) = rr
List(2)= True
List(3) = ka
.......

如何使用VB.NET代码分割它?

1
http://www.dotnetperls.com/split-vbnet - Harko
我需要以一种方式拆分它,以便我可以存储“=”后面的内容并继续进行第二步。我的意思是:数据源=qa2,所以list(0)=qa2... - Huy Zukerman
4个回答

11
你可以使用String.Split将项目在“;”字符处分割,然后再次在“=”字符处将每个项目分割。
Dim str As String = "data source=qa2;initial catalog=rr;persist security info=True;user id=ka;password=lalala;Connection Timeout=60"
Dim items() As String = str.Split(";"c)
Dim list As New List(Of String)
For i As Integer = 0 To items.Length - 1
    Dim elems() As String = items(i).Split("="c)
    If elems.Length > 1 Then list.Add(elems(1).Trim) Else list.Add("")
Next

如何进行反向分割,即获取等号前面的值而不是qa2?数据源,目录... - Huy Zukerman
@HuyZukerman:要获取等号前面的值而不是后面的值,请使用list.Add(elems(0).Trim)而不是list.Add(elems(1).Trim) - Blackwood
使用此技术拆分CSV文件行时要小心!请确保任何在引号之间的值都包含一个“;”! - schlebe

5

正如其他人所说,String.Split是显而易见的选择。但是,由于该字符串似乎是一个SQL Server连接字符串,您可能还想考虑使用SqlConnectionStringBuilder类来解析连接字符串。例如:

Dim builder As New SqlConnectionStringBuilder("data source=qa2;initial catalog=rr;persist security info=True;user id=ka;password=lalala;Connection Timeout=60")
Console.WriteLine("Data Source: " & builder.DataSource)
Console.WriteLine("Initial Catalog: " & builder.InitialCatalog)
' ...

5
使用List(Of String)并进行迭代:
Dim mylist As List(Of String) = yourstring.Split(",").ToList

For Each item As String In mylist
    ' Look at your items, split by comma into a list
    Console.WriteLine(item.ToString)
Next

2

这可能有点过度,但您也可以使用正则表达式来实现,像这样:

Imports System.Text.RegularExpressions
Imports System.Linq

' ...

Dim str As String = "data source=qa2;initial catalog=rr;persist security info=True;user id=ka;password=lalala;Connection Timeout=60"

Dim values As String() = Regex.Match(str, "(.+?=(?<value>.+?)(;|$))+") _
    .Groups("value").Captures.Cast(Of Capture).Select(Function(c) (c.Value)).ToArray()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接