字符串操作

时间:2010-10-19 05:13:48

标签: c#

我有全局声明的字符串变量。我必须根据用户输入动态地将一个子字符串附加到此字符串。为此,我使用str = str + substring;

在这种情况下,str中的字符串最终没有有意义的句子,即。,单词之间没有空格。为了理解我改为使用以下语句,

str = str +“”+ substring;或str = str + substring +“”;

这里每次我都需要在子字符串中附加额外的空格,然后将其附加到主字符串上,需要额外的字符串处理。

我可以有效地帮助解决这个问题吗?

4 个答案:

答案 0 :(得分:6)

这取决于你做这件事的频率。如果这是间歇性的(或实际上除了紧密循环之外的其他任何东西),那么就算了;你有什么好。 确定偶尔生成一个额外的字符串(组合的子字符串/空格),但它将在第0代收集;非常便宜。

如果您正在积极地(在循环中等),那么请使用StringBuilder代替:

// declaration
StringBuilder sb = new StringBuilder();
...
// composition
sb.Append(' ').Append(substring);
...
// obtaining the string
string s = sb.ToString();

最终(无关)点 - 重新“全局” - 如果您的意思是static,如果您有多个线程,则可能需要同步访问权限。

答案 1 :(得分:3)

你想要达到什么目的?您可以将单词存储在列表中

List<string> words = new List<string>();
...
words.Add(str);

然后延迟字符串操作(即在字之间添加空格)直到最后。这样,您即时操作只是添加到列表中,您可以在最后执行所有复杂的处理(无论它是什么)。

答案 2 :(得分:1)

如果你很少这样做,你可以通过以下方式略微提高代码:

str += " " + substring;

否则,我会选择Nanda的解决方案。

答案 3 :(得分:0)

@Nanda:在你的情况下你应该使用字符串构建器。

StringBuilder data = new StringBuilder();
data.AppendFormat(" {0}", substring);