以下代码:
If checkboxList.Items(i).Selected Then
.Fields("DESC1").Value += checkboxList.Items(i).Text + ", "
End If
应生成诸如“A,B,C,(space)”之类的输出,然后将其绑定到动态创建的GridView
。我想删除最后的两个字符串,即“,(空格)”。我怎么能这样做?
答案 0 :(得分:7)
看看String.Join,这可能会做你想要的,而不需要操纵最后两个字符。
答案 1 :(得分:4)
我不会在第一时间添加它们:)尝试
If checkboxList.Items(i).Selected Then
if .Fields("DESC1").Value Is System.DbNull.Value then
.Fields("DESC1").Value = checkboxList.Items(i).Text
else
.Fields("DESC1").Value += ", " + checkboxList.Items(i).Text
End If
End If
答案 2 :(得分:3)
有关信息,字符串连接很昂贵。它看起来(来自i
和结果)就像你应该真正使用StringBuilder
;一些粗略的伪代码(在C#中,但很容易转换为VB.Net):
StringBuilder sb = new StringBuilder();
for(int i = 0 ; i < checkboxList.Items.Count ; i++) {
if(checkboxList.Items[i].Selected) {
if(sb.Length > 0) sb.Append(", "); // add separator
sb.Append(checkboxList.Items[i].Text); // add text
}
}
someOjb.Fields("DESC1") = sb.ToString(); // use result
答案 3 :(得分:1)
看来你只想从“A,B,C”获得“A,B,C”。一些简单的字符串操作应该可以完成这项工作:
Dim input = "A, B, C, "
Dim result = input.Substring(0, input.LastIndexOf(","))
这比简单地删除最后两个字符更通用,因为它会查找最后一个逗号,这是我相信你所追求的。
当然,你在第一时间添加这两个字符的事实听起来有点狡猾。然而,我需要看到更多的背景来说明如何避免这种情况。
答案 4 :(得分:1)
你可以在字符串上使用.TrimEnd(“,”。ToCharArray()),或者你可以使用SubString:
strLetters.Substring(0, strLetters.Length - 2)
答案 5 :(得分:0)
使用
.Fields("DESC1").Value += checkboxList.Items(i).Text + ", "
. Fields("DESC1").Value = .Fields("DESC1").Value.TrimRight(new []{',',' '});
PS: - 抱歉,如果它是无效的vb语法:)
答案 6 :(得分:0)
还有“删除”:
string k = "okay";
string s = k.Remove(k.Length - 2, 2);
答案 7 :(得分:0)
这将删除所有尾随和/或[空格]:
.Fields("DESC1").Value = .Fields("DESC1").Value.TrimRight(", ".ToCharArrray())
答案 8 :(得分:0)
var selectedValues = checkboxList.Items
.Where(i => i.Selected)
.Select(i => i.Fields("DESC1").Value);
var result = String.Join(", ", selectedValues);
答案 9 :(得分:-1)
VB是否有三元运算符?
If checkboxList.Items(i).Selected Then
.Fields("DESC1").Value += checkboxList.Items(i).Text + (i == checkboxList.Items.Length-1 ? "" : ", ")
End If