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

 

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

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

以上

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

 

转载于:https://www.cnblogs.com/jswz69/archive/2012/11/15/3115488.html

    原文作者:anzh23356
    原文地址: https://blog.csdn.net/anzh23356/article/details/101276490
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞