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项,所以我认为内存不会有问题。