0

したがって、次の文字列があります: "ID:300、Order:1、Number:30.99、Other:null}"。私はc#を使用しています。

正規表現を使用して、数値の「パラメータ」から「30.99」を非表示にし、セキュリティ上の理由から*に置き換えたいのですが、まだ正規表現を使用していないため、理解できません。

「数値」は、0から999999999までの任意の10進数形式にすることができます......。

最終結果は「ID:300、Order:1、Number:*、Other:null}」になります。

誰かがこれで私を助けることができますか?

4

3 に答える 3

0

結果が単一の*(ID:300、Order:1、Number:*、Other:null)であるマークされた回答とは異なり、これはすべての数値と期間を*に置き換えます。

Console.WriteLine(
         Regex.Replace("ID:300,Order:1,Number:30.99,Other:null}",
                     @"(?<Text>Number\:)(?<Digits>[^,]+)",
                     new MatchEvaluator((mtch) =>
                           {
                              return mtch.Groups["Text"].Value + Regex.Replace( mtch.Groups["Digits"].Value, @".", "*");
                           }))
                           );

// Result:
// ID:300,Order:1,Number:*****,Other:null}
于 2013-01-10T21:20:38.300 に答える
0

Regex.Replaceを使用してそれを行うことができます:

string s = Regex.Replace( 
    "ID:300,Order:1,Number:30.99,Other:null",
    @"(?<=Number:).*?(?=,|$)",
    m => "*" );
于 2013-01-10T20:56:05.250 に答える
0

交換:

(?<=\bNumber:)\d+(\.\d+)?

単一の*

于 2013-01-10T20:56:58.933 に答える