Я пытаюсь удалить одиночные гласные из строки, но нет, если гласная двойная.Как удалить определенные символы
Например, строка
"Я Сохраняя Foobar"
следует распечатать, как
"м keepng foobr"
Я пытался все, но пока не придумали решение.
Я пытаюсь удалить одиночные гласные из строки, но нет, если гласная двойная.Как удалить определенные символы
Например, строка
"Я Сохраняя Foobar"
следует распечатать, как
"м keepng foobr"
Я пытался все, но пока не придумали решение.
Вы могли бы попробовать эту логику:
EDIT:
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());
Try:
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(" ", " ");
Не следует ли печатать «m keepng foobr»? – zneak
А как насчет тройных гласных? Вы держите все три, или вы удаляете один? – zneak
Вы должны попытаться написать код вместо «всего» и опубликовать его в своем вопросе. Попытка «всего» редко помогает - вам обычно нужно настраивать свои попытки. :) –