Как удалить чарлист из строки - PullRequest
0 голосов
/ 07 сентября 2018

Как я могу удалить определенный список символов из строки?

Например, у меня есть строка Multilanguage File07 и я хочу удалить все гласные, пробелы и числа, чтобы получить строку MltlnggFl.

Есть ли более короткий путь, чем использование петли foreach?

string MyLongString = "Multilanguage File07";
string MyShortString = MyLongString;
char[] charlist = new char[17]
  { 'a', 'e', 'i', 'o', 'u',
    '0', '1', '2', '3', '4', '5',
    '6', '7', '8', '9', '0', ' ' };
foreach (char letter in charlist)
{
    MyShortString = MyShortString.Replace(letter.ToString(), "");
}

Ответы [ 4 ]

0 голосов
/ 07 сентября 2018
public void removeVowels()
{
       string str = "MultilanguAge File07";
       var chr = str.Where(c => !"aeiouAEIOU0-9 ".Contains(c)).ToList();
       Console.WriteLine(string.Join("", chr));
}

1-я строка: создание строковой переменной желаний.

2-я строка: с использованием linq игнорировать гласные слова [прописные буквы, строчные буквы, цифры 0-9 и пробел] и преобразовать в список.

3-я строка: объединить список chr в одну строку с помощью функции string.join.

результат: MltlnggFl7

Примечание: функция removeVowels позволяет не только вводить малый регистр, 1-9 число и пустой пробел, но и удалять заглавные слова регистра из строки.

0 голосов
/ 07 сентября 2018

Как насчет этого:

var charList = new HashSet<char>(“aeiou0123456789 “);

MyLongString = new string(MyLongString.Where(c => !charList.Contains(c)).ToArray());
0 голосов
/ 07 сентября 2018

Попробуйте этот шаблон: (?|([aeyuio0-9 ]+)). Замените его пустой строкой, и вы получите желаемый результат.

Я использовал сброс ветви (?|...), чтобы все символы были объединены в одну группу для более легкой манипуляции.

Демо-версия.

0 голосов
/ 07 сентября 2018

Используйте этот код для замены списка символов в строке:

using System.Text.RegularExpressions;
string MyLongString = "Multilanguage File07";
string MyShortString = Regex.Replace(MyLongString, "[aeiou0-9 ]", "");

Результат:
Multilanguage File07 => MltlnggFl
Text from which some chars should be removed 12345 => Txtfrmwhchsmchrsshldbrmvd

Объяснение того, как это работает:
Выражение Regex, которое я здесь использую, представляет собой список независимых символов, определенных в скобках []
=> [aeiou0-9 ]
Regex.Replace () перебирает всю строку и просматривает каждый символ, если он будет соответствовать одному из символов в регулярном выражении.
Каждая совпавшая буква будет заменена пустой строкой ("").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...