2016-05-10 9 views
4

私はRegex Replace Methodを理解しようとしています。私は大文字で始まらない最初の大文字の前にスペースを挿入する関数を書いた。私はこれを実行するとRegex置換はすべて単一の代わりに一致

var tmpDisplay = Regex.Replace(name, "([^A-Z ])([A-Z])", "$1 $2"); 

それが大文字に先行されていない大文字のすべてを置き換えます。

私はMSDNをチェックしましたが、最初のケースだけではなく、文字列のregexがactグローバルに置き換えられているとは言えません。

どのようにして1つの値だけを置き換えることができますか?誰でもこの問題に関する文書を提供できますか?

+2

regexオブジェクトを宣言し、regexオブジェクトインスタンスを使用して一度だけ置換する必要があります。 –

+0

'name'の内容は何ですか? –

+0

@Thomasちょうどあなたの入力例 "TestNameDTO" –

答えて

7

静的Regex.Replaceメソッドは最大出現引数はありませんが、クラスのインスタンスがあります。

var rx = new Regex(@"([^A-Z ])([A-Z])"); 
Console.WriteLine(rx.Replace("NamePeteParker", "$1 $2", 1)); // Replace just once 
                 ^^ 

MSDNからIDEONE demo

を参照してください:

指定された入力内

Regex.Replace Method (String, MatchEvaluator, Int32)
文字列は、指定された文字列の最大数をに置き換えます。は、MatchEvaluatorデリゲートによって返された文字列で正規表現パターンと一致します。

+1

ありがとう、私はとてもうまく働いていました! –

関連する問題