Регулярное выражение - вырезать строку с конца на пробел, но с этим пробелом - PullRequest
0 голосов
/ 22 октября 2011

Входная строка для регулярного выражения является случайным числом символов из другой строки.Так что это может быть неполная часть слова в конце входной строки.Регулярное выражение должно вырезать неполную часть слова и пробел в конце строки.Потому что в конце этой строки должно быть целое слово.Итак, я написал это, чтобы обрезать неполную часть последнего слова (C #):

Regex.Replace(s, @"([^\s]*){1}$", String.Empty)

Как вы видите, я использую пробел в качестве метки для регулярного выражения, чтобы прекратить резать. Но как сократить это пространство? Оно должно быть в том же регулярном выражении, потому что я не хочу использовать другое регулярное выражение или функции "Обрезать" для этой простой операции.Я знаю, что легче использовать TrimEnd, но это не изящно.Так что это просто академический вопрос.:)

Ответы [ 2 ]

2 голосов
/ 22 октября 2011

Вам не нужно TrimEnd() или улучшение регулярных выражений.Просто используйте Trim(), вот так:

s.Trim();

Редактировать: Если вам нужно удалить последнее слово и у вас есть LINQ, вам может понравиться это:

string[] split = s.Split(new char[] {' '});
s = split.Take(split.Length - 1).Aggregate((m, n) => m + ' ' + n);
0 голосов
/ 22 октября 2011

Вы можете просто добавить дополнительный пробел, например, так:

\s?([^\s]*){1}$

Что может быть упрощено:

\s?\S*$

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