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

 

咋一看这是一个很简单的问题,不过如果出现如下情况,似乎就没那么简单了。

情况1: aa,a  bbb  cc,c

情况2: a"aa  bbb  c"cc

情况3: a"a,a  bbb  ccc

 

对于数组中,如果数组中单个字符串中存在逗号,这个时候的处理办法是,转换时,在这个字符串两边加引号。

不过问题来了,如果这个字符串中本就存在引号怎么办?

这时的处理办法是,模仿VB的做法,在引号的前面再加一个引号表示转义。

 

所以综合以上的办法,最终上面三种情况的处理结果如下:

结果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="lstString">待转换的字符串数组</param>
   5:      ''' <returns>转化结果</returns>
   6:      Public Shared Function ToCsvParam(ByVal lstString As List(Of String)) As String
   7:          Try
   8:              Dim sbCsv As StringBuilder = New StringBuilder()
   9:   
  10:              For Each sArrString As String In lstString
  11:                  If String.IsNullOrEmpty(sArrString) Then
  12:                      sbCsv.Append(String.Empty)
  13:                  ElseIf sArrString.Contains("""") Then
  14:                      Dim arrSubString() As String = sArrString.Split(CChar(""""))
  15:                      sArrString = String.Empty
  16:                      For Each sSubArrString As String In arrSubString
  17:                          sArrString += String.Concat(New String() {sSubArrString,
  18:                                                                    """",
  19:                                                                    """"})
  20:                      Next
  21:                      sArrString = sArrString.Remove(sArrString.Length - 2, 2)
  22:                      sbCsv.Append("""")
  23:                      sbCsv.Append(sArrString)
  24:                      sbCsv.Append("""")
  25:   
  26:                  ElseIf sArrString.Contains(","c) Then
  27:                      sbCsv.Append("""")
  28:                      sbCsv.Append(sArrString)
  29:                      sbCsv.Append("""")
  30:   
  31:                  Else
  32:                      sbCsv.Append(sArrString)
  33:                  End If
  34:   
  35:                  sbCsv.Append(","c)
  36:              Next
  37:   
  38:              Dim sRet As String = sbCsv.ToString()
  39:              If Not String.IsNullOrEmpty(sRet) Then
  40:                  sRet = sRet.Remove(sRet.Length - 1, 1).ToString()
  41:              End If
  42:              Return sRet
  43:          Catch ex As Exception
  44:              ' 异常处理
  45:              Throw
  46:          End Try
  47:      End Function

以上

下一篇将继续讨论如何将一个逗号分隔的字符串转换为一个字符串数组。

 

posted @ 2012-11-15 15:15  静水无踪  阅读(2020)  评论(0编辑  收藏  举报