C#用空格替换字符串中的所有字符

时间:2014-08-06 18:29:44

标签: c# string replace character

我在C#中制作一个刽子手游戏,它需要向玩家显示句子,但是所有角色都是" X&#34 ;,除了空格的空间。因此,如果句子是"我是一个人"它将是" XXX X XXXXXX"。当每个角色都替换为" X"时,我找到了一种方法,但问题是,空格也被替换为X.

代码:

string WrVS = String.Empty;
for (int i = 0; i < Words[randomVal].Length; i++)
{
    WrVS += "X";
}
RWordCensored.Text = WrVS;

(randomVal是从列表中选择随机句子的随机数), (RWordCensored是一个richTextBox,应该以我说的格式显示句子。

我没有在Google上找到答案。

/尤

5 个答案:

答案 0 :(得分:6)

试试这个

var res=new Regex("\\S").Replace("I am a person","X");
//res will be X XX X XXXXXX

答案 1 :(得分:4)

可以使用REGEX (我猜)完成,但这里是LINQ选项。

string str = "I'm a person";
string replacedString = new String(str.Select(r => r == ' ' ? ' ' : 'X').ToArray());

你会回来replacedString = "XXX X XXXXXX"

答案 2 :(得分:2)

在替换之前,您应该检查一下您要替换的字符是什么。

string WrVS = String.Empty;
for (int i = 0; i < Words[randomVal].Length; i++)
{
    char ch = Words[randomVal][i];
    WrVS += ch == ' ' ? ' ' : 'X';
}
RWordCensored.Text = WrVS;

或者,您可以使用LINQ:

RWordCensored.Text = new string(
    (from ch in Words[randomVal]
     select ch => ch == ' ' ? ' ' : 'X').ToArray());

(或使用其他格式,如Habib的回答所示。)

答案 3 :(得分:1)

添加此检查

if(Words[randomVal][i] != " ") //If the character is NOT a whitespace
{
    WrVS += "X";
}
else WrVS += " "; //If the character IS a white space

答案 4 :(得分:0)

要确定char是否为空格,您可以使用Char.IsWhiteSpace方法:

StringBuilder WrVS = new StringBuilder(Words.Length);

foreach(var ch in Words)
{
   ch = Char.IsWhiteSpace(ch) ? ch : 'X';
   wrVs.Append(ch)
}

RWordCensored.Text = WrVS.ToString();

此外,当您以这种方式处理字符串时,您应该使用StringBuilder类 - String vs. StringBuilder

相关问题