把一个逗号分隔的字符串转换为一个字符串数组

 

上一篇《把一个字符串数组转换为一个逗号分隔的字符串》,这次谈谈怎么逆向转换。

 

对于一个以逗号分隔的字符串,有以下三种情况需要考虑:

情况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

以上

如有不对或者还需改善之处,欢迎指正,小弟万分感谢!

 

posted @ 2012-12-03 23:18  静水无踪  阅读(1129)  评论(0编辑  收藏  举报