[英]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.