【发布时间】: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的文本框?
标签: c#