如何摆脱第一个连接符号

时间:2016-08-29 11:03:43

标签: vb.net

我正在循环一个表数据库以捕获某些行的名字

代码如下:

Try
While (readerFirstName.Read())
    SearchedName = readerFirstName("parteA")
    CombinatedNames = CombinatedNames & " & " & SearchedName
End While

Catch ex As Exception
    MsgBox(ex.ToString())
End Try

所需的结果就像

迈克&艾瑞克&汤姆

但我得到

&安培;迈克&艾瑞克&汤姆

我想我可以摆脱第一个“&”在使用String.TrimStart

创建字符串之后

但是有更好的方法来削减第一个“&”?

4 个答案:

答案 0 :(得分:5)

尝试更换循环:

While (readerFirstName.Read())
    SearchedName = readerFirstName("parteA")
    CombinatedNames = CombinatedNames & " & " & SearchedName
End While

有了这个:

Dim names As New List(Of String)()
While (readerFirstName.Read())
    names.Add(readerFirstName("parteA"))
End While
CombinatedNames = String.Join(" & ", names)

这里的主要思想是使用String.Join method在单个操作中连接单个名称。该方法对集合起作用,因此您首先必须将单个项目读入集合names

此方法将在项目之间添加分隔符字符串" & " ,从不在第一个或最后一个之后,因此您不会最终使用前导或尾随分隔符(除非您的列表中有空项目。)

PS:如果您事先知道将从readerFirstNames读取多少个名称,您可以通过将名称计数传递给List(Of T)构造函数来优化我建议代码的内存使用量(如{ {1}}参数)。

答案 1 :(得分:2)

在添加文本之前,您可以检查合并字符串中的包含

While (readerFirstName.Read())
   SearchedName = readerFirstName("parteA")
   If Not isNullOrEmpty(CombinatedNames) Then
      CombinatedNames = CombinatedNames & " & " & SearchedName
   Else
      CombinatedNames = SearchedName
   End If
End While

答案 2 :(得分:2)

其他答案是通常的做法,但这里有一些更懒惰的选择:

这将删除前3个字符:

CombinatedNames = Mid( CombinatedNames , 4 ) 

这会从字符串的开头修剪&

CombinatedNames = CombinatedNames.TrimStart(" "c, "&"c)

答案 3 :(得分:2)

或者您可以只读取第一条记录,然后连接其余记录:

CombinatedNames = If(readerFirstName.Read, readerFirstName!parteA.ToString, "")
While readerFirstName.Read
    CombinatedNames &= " & " & readerFirstName!parteA.ToString
End While