var str = "Your credit card number is 4321432143219999, this is really your credit card!";
var res = Regex.Replace(str, "[0-9](?=[0-9]{4})", "*");
Run Code Online (Sandbox Code Playgroud)
这将搜索后跟至少 4 位数字的数字并将其替换为*(因此它会被愚弄123456并更改为**3456)
如果您的信用卡号是 16 位数字:
var res2 = Regex.Replace(str, @"\b[0-9]{12}(?=[0-9]{4}\b)", new string('*', 12));
Run Code Online (Sandbox Code Playgroud)
这将用 12x 替换 12 位数字后跟 4 位数字(总共 16 位数字)的块*。数字必须与其他文本用空格或其他非单词字符分隔。所以A1234567890123456不好,也不是1234567890123456A。1234567890123456,没问题,因为,是一个非单词字符。
最好尽可能避免使用正则表达式,因为它们比普通的子字符串操作更慢且更难排除故障。
public static string HideNumber(string number)
{
string hiddenString = number.Substring(number.Length - 4).PadLeft(number.Length, '*');
return hiddenString;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3957 次 |
| 最近记录: |