簡體   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