c#用许多“x”替换字符串[重复]
Posted
技术标签:
【中文标题】c#用许多“x”替换字符串[重复]【英文标题】:c# replace string with many "x" [duplicate] 【发布时间】:2021-09-07 22:49:43 【问题描述】:我正在用 C# 编写一个 Windows 窗体应用程序。我有一个带有随机单词的标签,例如“计算机”。用户必须通过逐字母猜测来猜测这个词是什么。但是单词“computer”必须替换为与单词中的字母一样多的“x”,所以在这个例子中用户应该看到“xxxxxxxx”。
我尝试用这样的正则表达式替换它:
private void Form1_Load(object sender, EventArgs e)
word.Text = Regex.Replace(word.Text, @"^[a-zA-Z]+$", "x");
但它只替换为单个“x”。
我也尝试了for循环,但结果是一样的:
private void Form1_Load(object sender, EventArgs e)
for (int i = 0; i <= word.Text.Length; i++)
word.Text = Regex.Replace(word.Text, @"^[a-zA-Z]+$", "x");
【问题讨论】:
您需要将计算机单词从文本中替换为 xxxx 吗?它是“我的文本计算机”。替换(“计算机”,“x-x-x”) 查看您的代码:您将 任意数量的字母 替换为 one x。你应该做的是用 one x 替换任何字母的 one。尝试删除+
(表示:上一项或多项)
@FranzGleichmann 而我删除 + 它不会替换任何字母
您可以简单地使用 PadRight()。即: var xxx = "".PadRight(word.Text.Length, 'x');或者,看起来您正在使用 winforms,您可以使用密码文本框。
为什么不使用内置passwordchar
的文本框?
【参考方案1】:
您可以创建一个新的字符串“x”重复您单词中的字符数。不需要正则表达式。
word.Text = new string("x", word.Text.Length);
【讨论】:
【参考方案2】:没有RegEx
的方法
string wordText = "computer";
wordText = string.Concat(wordText.Select(x => char.IsLetter(x) ? 'x' : x));
如果您想继续使用RegEx
,请将@"^[a-zA-Z]+$"
替换为"[a-zA-Z]"
以匹配每个字符
【讨论】:
【参考方案3】:试试这个:
word.Text=String.Join("",word.Text.Select(s=>s='x').ToArray());
【讨论】:
以上是关于c#用许多“x”替换字符串[重复]的主要内容,如果未能解决你的问题,请参考以下文章