C# C将字符串中的所有字符替换为X,空格除外

C# C将字符串中的所有字符替换为X,空格除外,c#,string,replace,character,C#,String,Replace,Character,我正在用C语言制作一个刽子手游戏,它需要向玩家展示这个句子,但是所有的角色都是X,除了一个空格和一个空格。因此,如果句子是“我是一个人”,那么它将是XXX X XXXXXX。当每个字符都替换为X时,我找到了一种方法,但问题是,空格也替换为X 守则: string WrVS = String.Empty; for (int i = 0; i < Words[randomVal].Length; i++) { WrVS += "X"; } RWordCensored.Text = Wr

我正在用C语言制作一个刽子手游戏,它需要向玩家展示这个句子,但是所有的角色都是X,除了一个空格和一个空格。因此,如果句子是“我是一个人”,那么它将是XXX X XXXXXX。当每个字符都替换为X时,我找到了一种方法,但问题是,空格也替换为X

守则:

string WrVS = String.Empty;
for (int i = 0; i < Words[randomVal].Length; i++)
{
    WrVS += "X";
}
RWordCensored.Text = WrVS;
randomVal是从列表中选择随机句子的随机数, rwordcenstered是一个richTextBox,它应该按照我说的格式显示句子

我还没有在谷歌上找到我的问题的答案


/Viktor

在替换角色之前,您可能应该检查要替换的角色

string WrVS = String.Empty;
for (int i = 0; i < Words[randomVal].Length; i++)
{
    char ch = Words[randomVal][i];
    WrVS += ch == ' ' ? ' ' : 'X';
}
RWordCensored.Text = WrVS;
或者使用另一种格式,如Habib的回答所示。

我想可以使用正则表达式来完成,但这里是LINQ选项

string str = "I'm a person";
string replacedString = new String(str.Select(r => r == ' ' ? ' ' : 'X').ToArray());
您将得到replacedString=XXX X X XXXXXX,添加此支票

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

要确定字符是否为空格,可以使用以下方法:

另外,当您以这种方式处理字符串时,您应该使用class-

试试这个

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

“我是一个人”是三个单词,每个单词之间有一个空格。我还没有在谷歌上找到我的问题的答案。这是新一代的问题吗?你不必找到一个完全符合你要求的答案。你应该用它们来解决你的问题。哦,对不起,我指的是句子而不是单词。我没有在谷歌上找到我的问题的答案,这并不是说我没有找到我的问题的答案。这不会增加任何空间。谢谢,更新的答案。我怀疑这个类似刽子手的游戏需要StringBuilder的效率,但最好养成好习惯。你的我最喜欢,很有魅力。不需要花哨的linq或字符串生成器。。
StringBuilder WrVS = new StringBuilder(Words.Length);

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

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