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