Vb.net 如何去掉第一个连接符号

Vb.net 如何去掉第一个连接符号,vb.net,Vb.net,我正在循环一个表数据库以捕获某些行的名字 代码如下: Try While (readerFirstName.Read()) SearchedName = readerFirstName("parteA") CombinatedNames = CombinatedNames & " & " & SearchedName End While Catch ex As Exception MsgBox(ex.ToString()) End Try 期望

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

代码如下:

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

Catch ex As Exception
    MsgBox(ex.ToString())
End Try
期望的结果是

迈克、埃里克和汤姆

但我明白了

&迈克、埃里克和汤姆

我想我可以使用string.TrimStart去掉字符串形成后的第一个“&”


但是有一个更好的方法来切断第一个“&”尝试替换你的循环:

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)
这里的主要思想是使用在一个操作中连接单个名称。该方法作用于集合,因此首先必须将单个项读入集合
名称

此方法将注意在项目之间添加分隔符字符串
“&”
,而不是在第一个之前或最后一个之后,因此不会以前导或尾随分隔符结束(除非列表中有空项目)


注意:如果您事先知道将从
readerFirstNames
读取多少个名称,您可以通过将名称计数传递到
列表(T)
构造函数(作为
容量
参数)来优化我建议的代码的内存使用情况。

尝试替换循环:

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)
这里的主要思想是使用在一个操作中连接单个名称。该方法作用于集合,因此首先必须将单个项读入集合
名称

此方法将注意在项目之间添加分隔符字符串
“&”
,而不是在第一个之前或最后一个之后,因此不会以前导或尾随分隔符结束(除非列表中有空项目)


注意:如果您碰巧事先知道将从
readerFirstNames
读取多少个名称,您可以通过将名称计数传递给
列表(T)
构造函数(作为
容量
参数)来优化我建议的代码的内存使用。

您可以在添加文本之前检查组合字符串中的内容

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

在向组合字符串中添加文本之前,可以检查该字符串中的内容

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

其他答案是通常的方法,但这里有几个更懒惰的选择:

这将删除前3个字符:

CombinatedNames = Mid( CombinatedNames , 4 ) 
这将从字符串的开头修剪
&

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

其他答案是通常的方法,但这里有几个更懒惰的选择:

这将删除前3个字符:

CombinatedNames = Mid( CombinatedNames , 4 ) 
这将从字符串的开头修剪
&

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

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

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

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

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

@如果你选择这个方案,我建议你考虑一下。循环中重复的字符串连接将是此类的典型用例;“它更高效,内存更灵活。”JaydipJ也工作得很好。Thanks@stakx谢谢你的提示。@fedeteka:如果你选择这个选项,我建议你考虑一下。循环中重复的字符串连接将是此类的典型用例;“它更高效,内存更灵活。”JaydipJ也工作得很好。Thanks@stakx谢谢你的提示。这是一个很好的简单的解决方案,当你确切地知道要删除哪些字符时效果会很好。只需注意:基于第二个
TrimStart
的方法在理论上可能会破坏第一个项目,如果第一个项目以空格或符号开头。CombinatedNames=Mid(CombinatedNames,4)也可以很好地工作,但在我的案例中使用数字3,这是一个很好且简单的解决方案,当您确切知道要删除哪些字符时效果会很好。请注意:基于第二个
TrimStart
的方法在理论上可能会破坏第一个项目,如果第一个项目以空格或符号开头。CombinatedNames=Mid(CombinatedNames,4)也很好,但在我的案例中使用数字3,解决方案非常有效!!我不确定如何创建一个未定义数量的项目数组。我不知道每个循环中有多少项,但数据库很小,可能不超过1000项,所以我认为内存不会有问题。解决方案非常有效!!我不确定如何创建一个未定义数量的项目数组。我不知道每个循环中有多少项,但数据库很小,可能不超过1000项,所以我认为内存不会有问题。