将多个字符串组合到一个字符串中

时间:2010-11-15 11:36:26

标签: c# asp.net

    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

怎么做?

5 个答案:

答案 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());