C# 计算并替换文本框中的所有元音

C# 计算并替换文本框中的所有元音,c#,C#,我需要计算所有元音,并在文本框中用字母x替换。我设法完成了计数部分,下面是代码,但我在用字母x替换文本框中的所有元音时遇到了问题。有人能帮我吗 int total = 0; string sentence = textBox1.Text.ToLower(); char[] vowels = { 'a', 'e', 'i', 'o', 'u', 'y'}; { total++; } total = sentence.Count(c =>

我需要计算所有元音,并在文本框中用字母x替换。我设法完成了计数部分,下面是代码,但我在用字母x替换文本框中的所有元音时遇到了问题。有人能帮我吗

int total = 0;

string sentence = textBox1.Text.ToLower();
char[] vowels = { 'a', 'e', 'i', 'o', 'u', 'y'};                   
{
      total++;
}

total = sentence.Count(c => vowels.Contains(c));
MessageBox.Show("There are " + total++ " vowels";

for (int i = 0; i < sentence.Length; i++)
int-total=0;
string语句=textBox1.Text.ToLower();
char[]元音={'a','e','i','o','u','y'};
{
总计++;
}
总数=句子.计数(c=>元音.包含(c));
MessageBox.Show(“有”+total++“元音”;
for(int i=0;i<句子长度;i++)
编辑1


谢谢大家的帮助。出于某种原因,我的文本框中的元音没有变化!!!它可以计数,但不能替换字母x。我在这里尝试了所有的解决方案,但我的文本框中的元音仍然没有变化

foreach(char vowel in vowels)
    sentence = sentence.Replace(vowel, 'x');

由于某种原因,我的文本框中的元音不会改变!!!它会改变 正在计数,但没有替换字母x。我已经尝试了所有的方法 解决方案在这里,但仍然没有发生任何事情,我的元音在 文本框

文本框和字符串之间没有链接。因此,如果更改字符串,则不会更改
文本框。Text
。必须重新分配新值:

textBox1.Text = sentence; // after you have used Replace like shown above
您可以使用Linq:


尝试使用
ForEach
Linq
-表达式和
字符串。替换
方法:

vowels.ToList().ForEach(vowel => sentence = sentence.Replace(vowel, 'x'));
编辑1:

您也可以尝试使用
for
-循环,就像您在问题中尝试的那样:

for (int i = 0; i < sentence.Length; i++) {
    if(vowels.Contains((char)sentence[i])) {
        sentence[i] = 'x';
    }
}
只是一个简单的正则表达式:

var r = new Regex("[aeiouy]");
sentence = r.Replace(sentence, "x");
编辑:由于字符串是不可变的,对
语句的更改不会反映在文本框中,因此您必须重新分配其值:

textBox1.Text = sentence;

为什么不像上面的同事所建议的那样,简单地尝试一下常规的表达呢

比如:

string text=“这里有一些文本”


然后,可能会继续使用一些集合和foreach cycle()来执行逻辑,在其中用char/字符串“x”替换.

谢谢大家的帮助。出于某种原因,当我单击按钮时,我的文本框中没有出现任何变化……标签会计算正确的元音数……但我现在尝试了你的所有提示,但没有发生任何变化。@Lini你的意思是没有替换?@Lini我编辑了我的帖子。如果有用,请向上投票。谢谢,出于某种原因,元音被标记为红色在元音中。包含…我以前试过这个代码。它说“char[]不包含包含的定义”多么优雅:)!您必须将
senetnce
的内容分配给您的文本框。仅因为您说
sential=textboax1.Value
并不意味着对
sential
的更改也会反映在文本框中,因为字符串是不可变的。请参阅我的编辑。
var r = new Regex("[aeiouy]");
sentence = r.Replace(sentence, "x");
textBox1.Text = sentence;
        string vowels = @"([aeiou])";
        Regex regex = new Regex(vowels);

        Match match = regex.Match(text);