在C#中将字符插入字符串

Vil*_*ger 3 c# string

在C#中给出以下字符串,如何在字符串中的每个字符之间插入一个字符?

例如: "Hello Sunshine" 会变成 "H.e.l.l.o. .S.u.n.s.h.i.n.e"

在C#中执行此操作的最有效,最快捷的方法是什么?

Mar*_*ers 5

如果你想在每个角色后使用一个点,请使用StringBuilder:

StringBuilder sb = new StringBuilder(s.Length * 2);
foreach (char c in s) {
    sb.Append(c);
    sb.Append('.');
}
string result = sb.ToString();
Run Code Online (Sandbox Code Playgroud)

如果您不想在.NET 4.0中使用尾随点,则可以使用string.Join.

string result = string.Join(".", (IEnumerable<char>)s);
Run Code Online (Sandbox Code Playgroud)

在.NET 3.5及更早版本中,第二个参数应该是一个数组,这意味着您必须临时创建一个数组,因此使用StringBuilder上面显示的解决方案最有可能更快,并将第一个或最后一个索引视为特殊情况.

注意:通常您不需要最有效的解决方案,只需要一个足够快的解决方案.如果一个稍慢但更简单的解决方案足以满足您的需求,请使用它而不是不必要地优化性能.

  • +1 - 可以通过`StringBuilder sb = new StringBuilder(s.Length*2)来提高效率; (5认同)

Bro*_*ass 5

怎么样:

string result = string.Join(".", someString.AsEnumerable());
Run Code Online (Sandbox Code Playgroud)

这隐藏了大部分的复杂性,并将在StringBuilder内部使用.