0

所以我有这个字符串:“ID:300,Order:1,Number:30.99,Other:null}”。我正在使用 c#。

出于安全原因,我想使用正则表达式从数字“参数”中隐藏“30.99”,并将其替换为*,但我仍然是正则表达式的新手,无法弄清楚。

“数字”可以是任何十进制形式 0 到 999999999.......

最终结果将是“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 回答