2010-12-28 12 views

答えて

4

一つの解決策は、コールバックを使用している:

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

または前後参照(少しトリッキー)を使用して:

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

もう一度、 'new String( '_'、match.Length)'がここでより適切かもしれません。しかたがない。 – Kobi

+0

間違いなく。実行されていることがより明白なだけでなく、スペース以外の空白文字を処理する利点もあります。 – Brian

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

私は正規表現の質問に多すぎる答えをしたと思いますが、これを行う良い方法があると確信しています: 'P' – Kobi

関連する問題