@dyrtage6

Как найти в строке слово и удалить его?

Допустим у меня есть массив:
string[] punctuation_marks = new string[] { "/", ".", ",", ";", ":", "]", "[", "<", ">", "{", "}", "|", "!", "?" };
Как узнать, есть ли значение одного из этих элементов в строке string и как их удалить?
  • Вопрос задан
  • 385 просмотров
Решения вопроса 1
byte916
@byte916
Вот пять способов, как это можно сделать. Компилируется ли код - не проверял

Возможно, самый медленный способ
foreach (var punctuationMark in punctuation_marks)
            {
                str = str.Replace(punctuationMark, "");
            }


Способ через string.Split/Join
str = string.Join("", str.Split(punctuation_marks, StringSplitOptions.RemoveEmptyEntries));


Через StringBuilder. Проверка что это знак пунктуации идёт через char.IsPunctuation, возможно, это не то, что надо
StringBuilder sb = new StringBuilder();
            foreach (var c in str.ToCharArray())
            {
                if (!char.IsPunctuation(c)) sb.Append(c);
            }


Еще через StringBuilder. Тут проверка идёт по вашему массиву
StringBuilder sb = new StringBuilder();
            foreach (var c in str.ToArray())
            {
                if (punctuation_marks.All(p=>p != c.ToString())) sb.Append(c);
            }


С помощью регулярного выражения
var regexp = new Regex(@"/\.,;:]\[<>\{}\|!\?");
            regexp.Replace(str, "");
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы