Я хочу заменить только начальные и конечные пробелы строки числом подчеркивания.
Строка ввода
" New Folder "
(Примечания: один пробел впереди и два пробела в конце этой строки)
выход
Моя строка вывода "_New Folder__" (Выходная строка имеет одно подчеркивание спереди и два подчеркивания в конце.)
"_New Folder__"
Одно решение использует обратный вызов:
s = Regex.Replace(s, @"^\s+|\s+$", match => match.Value.Replace(' ', '_'));
Или используя lookaround (немного сложнее):
s = Regex.Replace(s, @"(?<=^\s*)\s|\s(?=\s*$)", "_");
Вы также можете выбрать решение без регулярных выражений, но я не уверен, что оно симпатичное:
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();