把一个字符串数组转换为一个逗号分隔的字符串
咋一看这是一个很简单的问题,不过如果出现如下情况,似乎就没那么简单了。
情况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
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/anzh23356/article/details/101276490
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
相关文章