Замените только начальные и конечные пробелы подчеркиванием, используя регулярное выражение в c # - PullRequest
2 голосов
/ 28 декабря 2010

Я хочу заменить только начальные и конечные пробелы строки числом подчеркивания.

Строка ввода

" New Folder  "

(Примечания: один пробел впереди и два пробела в конце этой строки)

выход

Моя строка вывода "_New Folder__"
(Выходная строка имеет одно подчеркивание спереди и два подчеркивания в конце.)

Ответы [ 2 ]

4 голосов
/ 28 декабря 2010

Одно решение использует обратный вызов:

s = Regex.Replace(s, @"^\s+|\s+$", match => match.Value.Replace(' ', '_'));

Или используя lookaround (немного сложнее):

s = Regex.Replace(s, @"(?<=^\s*)\s|\s(?=\s*$)", "_");
1 голос
/ 28 декабря 2010

Вы также можете выбрать решение без регулярных выражений, но я не уверен, что оно симпатичное:

StringBuilder sb = new StringBuilder(s);
int length = sb.Length;
for (int postion = 0; (postion < length) && (sb[postion] == ' '); postion++)
    sb[postion] = '_';
for (int postion = length - 1; (postion > 0) && (sb[postion] == ' '); postion--)
    sb[postion] = '_';
s = sb.ToString();
...