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”替换字符串[重复]的主要内容,如果未能解决你的问题,请参考以下文章

C#中的字符串替换变音符号[重复]

用 C# 中的常用破折号替换长破折号 [重复]

用 C# 替换完整 sql 查询中的单引号

如何在bash中将空格替换为新行[重复]

如何在c#中替换字符串中的特定字符?

使用 sed [重复] 替换包含反斜杠的字符串