我有一个代码,可以将列表框中的多个选定项目转换为带有逗号分隔值的单行。现在我想在多行文本框中实现相同的功能,在多行文本框中,值将像abc,def,pqr现在我想将它分开以便在数据库'abc','def','pqr'中搜索。我正在使用的下面的代码是为listbox如何修改它,以便我可以将其用于文本框目的
var SB = new StringBuilder();
foreach (ListItem lst in ListBox1.Items)
{
if (lst.Selected)
{
SB.Append("'" + lst.Value + "',");
}
}
var FinalString = SB.ToString().Substring(0, (SB.Length - 1));
答案 0 :(得分:2)
String.Join(",", txt.Lines.Select(s => "'" + s + "'"))
String.Join是一个方法,它将分隔符作为第一个参数,将一系列字符串作为第二个参数。它解决了开箱即用的问题,更重要的是解决了“最后一个逗号”问题,这个问题在使用循环时非常烦人。您可以将此方法用于列表框代码。
第二个参数将字符串数组映射到添加了单引号的相同字符串。基本上它需要一堆字符串并将转换应用于每个字符串并返回一堆转换后的字符串。转换用lambda表达式表示。
答案 1 :(得分:0)
原来的答案非常好。但请注意,修改每个输入字符串的另一种方法是简单地以不同方式构造连接文本:
"'" + string.Join("','", txt.Lines) + "'"
这样,创建的中间对象就更少了(没有Select()
迭代器,只有一次额外调用string.Concat()
而不是每个枚举元素一次。在大多数情况下,两者之间没有可测量的差异,但有些人可能更喜欢这种方法(毕竟代码稍短)。