我在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上找到答案。
/尤
答案 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