接上一篇《把一个字符串数组转换为一个逗号分隔的字符串》,这次谈谈怎么逆向转换。
对于一个以逗号分隔的字符串,有以下三种情况需要考虑:
情况1: "aa,a",bbb,"cc,c"
情况2: "a""aa",bbb,"c""cc"
情况3: "a""a,a",bbb,ccc
同前文的处理情况类似,最终需要转换成以下形式:
结果1: aa,a bbb cc,c
结果2: a"aa bbb c"cc
结果3: a"a,a bbb ccc
以下是代码
1: ''' <summary>
2: ''' 把一个逗号分隔的字符串转换为一个字符串数组
3: ''' </summary>
4: ''' <param name="sArg">待转换的字符串</param>
5: ''' <returns>转换结果</returns>
6: ''' <remarks></remarks>
7: Public Shared Function SplitCsvParam(ByVal sArg As String) As String()
8: Try
9: Dim lstRet As New List(Of String)
10:
11: Dim lstCharArg() As Char = sArg.ToCharArray()
12: Dim sbStr As New StringBuilder()
13: Dim bStartQuot As Boolean = False
14: Dim bStrQuot As Boolean = False
15:
16: For Each cArg As Char In lstCharArg
17: If cArg = """" Then
18: If Not bStartQuot And Not bStrQuot Then
19: bStartQuot = True
20: ElseIf Not bStrQuot Then
21: bStartQuot = False
22: bStrQuot = True
23: Else
24: bStartQuot = True
25: bStrQuot = False
26: sbStr.Append(cArg)
27: End If
28: ElseIf cArg = ","c Then
29: If bStartQuot Then
30: sbStr.Append(cArg)
31: Else
32: lstRet.Add(sbStr.ToString())
33: sbStr.Clear()
34: bStrQuot = False
35: End If
36: Else
37: sbStr.Append(cArg)
38: End If
39: Next
40: lstRet.Add(sbStr.ToString())
41:
42: Return lstRet.ToArray()
43: Catch ex As Exception
44: ' 异常处理
45: Throw
46: End Try
47: End Function
以上
如有不对或者还需改善之处,欢迎指正,小弟万分感谢!