咋一看这是一个很简单的问题,不过如果出现如下情况,似乎就没那么简单了。
情况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