所以我有这个字符串:“ID:300,Order:1,Number:30.99,Other:null}”。我正在使用 c#。
出于安全原因,我想使用正则表达式从数字“参数”中隐藏“30.99”,并将其替换为*,但我仍然是正则表达式的新手,无法弄清楚。
“数字”可以是任何十进制形式 0 到 999999999.......
最终结果将是“ID:300,Order:1,Number: * ,Other:null}”
有人可以帮我解决这个问题吗?
与结果为单个 * (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}
您可以使用 Regex.Replace 来做到这一点:
string s = Regex.Replace(
"ID:300,Order:1,Number:30.99,Other:null",
@"(?<=Number:).*?(?=,|$)",
m => "*" );
代替:
(?<=\bNumber:)\d+(\.\d+)?
用一个*
.