我试图从字符串中删除单个元音,但如果元音是双重的话,则不会。
例如字符串
"我正在保持一个foobar"
应打印为
" m keepng foobr"
到目前为止,我已经尝试了所有方法,但没有提出解决方案。
答案 0 :(得分:0)
你可以试试这个逻辑:
编辑:
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(" ", " ");