如何删除某些字符

时间:2015-06-13 22:16:51

标签: c# string

我试图从字符串中删除单个元音,但如果元音是双重的话,则不会。

例如字符串

  

"我正在保持一个foobar"

应打印为

  

" m keepng foobr"

到目前为止,我已经尝试了所有方法,但没有提出解决方案。

2 个答案:

答案 0 :(得分:0)

你可以试试这个逻辑:

  1. 循环通过字符串并检查两个字符
  2. if(isBothVowelsAndEqual())什么都不做;否则removeFirstChar();
  3. 编辑:

    public List<char> vowels = "AEIOUaeiou".ToList();
    public bool isBothVowelsAndEqual(char first, char second)
        {
           return (first == second && vowels.Contains(first));
        }
    
    const string s = "I am keeeping a foobar";
    string output=String.Empty;
    for (int i = 0; i < s.Length-1; i++)
    {
        if (isBothVowelsAndEqual(s[i], s[i + 1]))
        {                        
           output = output + s[i] + s[i+1];
           i++;
        }
        else
        {
           if (!vowels.Contains(s[i])) {
           output += s[i];
        }
      }                
    }
    Console.WriteLine(output.Trim());
    

答案 1 :(得分:0)

尝试:

Regex.Replace(input, @"([aeiou])\1", "");

虽然对于I am keeping a foobar,它会为您提供m keepng foobr,这与您所需的m keepng foobr不同,因为您也会从所需结果中删除空格。

如果你想删除无关的空格,那么这是一个三步操作:删除元音;删除进程/尾随空格;删除双空格。

var raw = Regex.Replace(input, @"([aeiou])\1", "");
var trimmed = raw.Trim();
var final = trimmed.Replace("  ", " ");