String f = DropDownList1.SelectedItem.Value;
String s = DropDownList3.SelectedItem.Value.PadLeft(3,'0');
String q = DropDownList2.SelectedItem.Value;
String w = TextBox2.Text.ToString();
String o = TextBox3.Text.ToString();
我想把它组合成一个字符串,即字符串u = f + s + q + w + o
怎么做?
答案 0 :(得分:3)
您提供的代码应该可以正常工作:
String u = f + s + q + w + o;
请注意,编译器会将其转换为:
String u = String.Concat(new String[] { f, s, q, w, o });
编辑:到目前为止所有其他答案都表明StringBuilder
是正确的方式。 不是。 StringBuilder
非常适合避免这样的问题:
// Bad code - don't use
string result = "";
foreach (string value in collection) {
result += value;
}
在这种情况下,会创建越来越大的临时字符串,因为在循环的每次迭代中都会执行连接。中间值仅为循环的下一次迭代所需的 。
现在,在这种情况下,我们知道单个go中的连接的整个结果:f + s + q + w + o
。编译器将其转换为String.Concat
的单个调用,因此不需要临时字符串。此外,String.Concat
方法可以构建一个正好正确的内部存储长度的结果字符串,因为它知道要开始的所有内容。在StringBuilder
中,有一个初始容量,然后在必要时通过重新分配来增加。这意味着通常要么结果字符串有一个比它需要的更大的后备存储,或有一个最终的“复制”阶段转换为正确大小的字符串。 (采取哪种行动是针对具体实施的;我认为框架的早期版本用于执行前者,后期版本执行后者。)
答案 1 :(得分:2)
String u= f+s+q+w+o;
或
StringBuilder sb = new StringBuilder();
sb.Append(f);
sb.Append(2);
sb.Append(q);
sb.Append(w);
sb.Append(o);
答案 2 :(得分:0)
String result= f+s+q+w+o; will do the trick
然而,使用StringBuilder进行此类操作
编辑但是始终使用StringBuilder进行此类操作
答案 3 :(得分:0)
好吧,如果你不关心表现,字符串u = f + s + q + w + o; 实际上会有效。连接大量字符串的“常规”方法是使用StringBuilder类,您可以在System.Text命名空间中找到它:
public class bla
{
public String concatSomeStrings(String a, String b, String c) {
StringBuilder sb = new StringBuilder();
sb.Append(a);
sb.Append(b);
sb.Append(c);
return sb.ToString();
}
}
使用字符串构建器的优点是在内部,它不会为每个连接操作重新分配新字符串的空间,因此它更快,因此被认为是更“正确”的方式。就个人而言,当你需要的只是结合5个字符串 - f + s + q + w + o是我喜欢的方式。
希望有所帮助: - )
答案 4 :(得分:-1)
个人ID使用stringbuild,因为字符串是不可变,因此会为您想要输出的每个用户创建新对象
var u = new StringBuilder();
u.Append(DropDownList1.SelectedItem.Value);
u.Append(DropDownList3.SelectedItem.Value.PadLeft(3, '0'));
u.Append(DropDownList2.SelectedItem.Value);
u.Append(TextBox2.Text.ToString());
u.Append(TextBox3.Text.ToString());