使用c#中的正则表达式仅用下划线替换前导和尾随空格

时间:2010-12-28 10:51:11

标签: c# regex whitespace

我想用字母数字替换字符串的前导和尾随空格。

输入字符串

" New Folder  "

(注意:前面有一个空白区域,这个字符串末尾有两个白色空格)

输出

我的愿望输出字符串"_New Folder__"
(输出字符串在前面有一个下划线,在末尾有两个下划线。)

2 个答案:

答案 0 :(得分:4)

一种解决方案是使用回调:

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

或使用环视(有点棘手):

s = Regex.Replace(s, @"(?<=^\s*)\s|\s(?=\s*$)", "_");

答案 1 :(得分:1)

你也可以选择非正则表达式解决方案,但我不确定它是不是很好:

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();