繁体   English   中英

C# 让每个字母后面都有一个空格

[英]C# Make every letter have a Space behind it

我写了一个代码,应该在每个字符之后写一个空格。 但它看起来不像它正在工作。

foreach (char c in texttoencodedecode.Text)
{
    c += " ";
    texttoencodedecode.Text += c
}

可悲的是,这不起作用。 c += " "; 输出错误。 希望你能帮助我干杯。

char c是单个字符(它是固定的,你不能有一个零长度的char ,你不能有一个双长度的char ),所以你不能“添加”它。 你甚至不能修改你正在执行foreach的变量(所以你不能修改texttoencodedecode.Text ),你会在运行时得到一个Exception 解决方案是写入一个新的临时变量temp ,然后用temp重新分配texttoencodedecode.Text

string temp = string.Empty;

foreach (char c in texttoencodedecode.Text)
{
    temp += c;
    temp += " ";
}

texttoencodedecode.Text = temp;

现在......通常你应该为此使用StringBuilder ,因为“附加”多次到string是“坏的”( string不是为它构建的):

var sb = new StringBuilder();

foreach (char c in texttoencodedecode.Text)
{
    sb.Append(c);
    sb.Append(' ');
}

texttoencodedecode.Text = sb.ToString();

一个char只能包含单个字符,因此尝试将 append 另一个字符添加到它会导致错误,除非您将其转换为字符串。

foreach (char c in texttoencodedecode.Text)
{
    string s = c + " ";
    texttoencodedecode.Text += s;
}

或者

foreach (char c in texttoencodedecode.Text)
{
    texttoencodedecode.Text += (c + ' ');
}

如果你想聪明一点,尽管你可以使用 linq:

texttoencode.Text = new string( texttoencode.Text.SelectMany( c => new char[] { c, ' '}).ToArray());

这避免了字符串的连续重新分配。

我猜你想要这个

输入:你好

output:你好

在这里,c 是一个字符。 您正在用 c 添加空格(“”),这是不可能的。

您可以尝试这种方式(提示):

取一个空字符串(temp)

foreach (char c in texttoencodedecode.Text) {

Add c with temp
Add space with temp

}

分配 texttoencodedecode.Text = temp

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM