Как удалить специальные символы, если они находятся только в позиции первого и последнего в строке c# - PullRequest
2 голосов
/ 20 марта 2020

Я пытаюсь удалить специальные символы, если они встречаются как первый и последний символ строки.

code;

  Regex.Replace(searchParams.SearchForText, @"(\s+|@|%|&|'|\(|\)|<|>|#)", "");

Но он удаляет специальные символы, даже если он находится в середине строки.

ex : input : $input@text%
     output : input@text

Ответы [ 3 ]

4 голосов
/ 20 марта 2020

Вы можете использовать

var pattern = @"(?:\s+|[@%&'()<>#])";
var result = Regex.Replace(searchParams.SearchForText, $@"^{pattern}|{pattern}$", "");

См. Полученное демо ^(?:\s+|[@%&'()<>#])|(?:\s+|[@%&'()<>#])$ regex .

Если вам нужно удалить все эти символы из начала и / или конец строки использовать

var result = Regex.Replace(searchParams.SearchForText, @"^[@%&'()<>#\s]+|[@%&'()<>#\s]+$", "");

См. это демонстрационное выражение регулярного выражения .

Здесь обратите внимание, что все отдельные альтернативные символы объединены в один символьный класс для более эффективного поиска. Их не нужно экранировать внутри символьного класса, поэтому шаблон еще чище.

Далее, поскольку \s+ соответствует одному или нескольким пробельным символам, его нельзя объединить с одиночными альтернативами в символьном классе. поэтому используется группа без захвата с чередованием, (?:...|...).

Якорь ^ делает первое совпадение ^{pattern} только в начальной позиции строки, а якорь $ делает второе {pattern}$ альтернативное совпадение только в конце строки.

Поскольку pattern должно повторяться дважды, оно объявляется как переменная, и регулярное выражение строится динамически.

3 голосов
/ 20 марта 2020

Вы можете просто использовать Trim ()

var input = "$input@text%";
var output = input.Trim('@', '%', '$', '\'', '#');
3 голосов
/ 20 марта 2020
var specialChars = "$@%&'()<>#\u0020".ToCharArray();
var trimmed = "$input@text%".Trim(specialChars);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...