C#RegEx。用文本替换信用卡
我有一些里面有信用卡号码的文字,比如: “您的信用卡号码是4321432143219999,这确实是您的信用卡!” 我需要通过正则表达式查找此编号,并将其替换为C#RegEx。用文本替换信用卡,c#,asp.net,regex,replace,C#,Asp.net,Regex,Replace,我有一些里面有信用卡号码的文字,比如: “您的信用卡号码是4321432143219999,这确实是您的信用卡!” 我需要通过正则表达式查找此编号,并将其替换为*************9999,因此结果文本应为: “您的信用卡号是**********9999,这真是您的信用卡!” 我怎么能用C#做呢 谢谢 var str = "Your credit card number is 4321432143219999, this is really your credit card!"; var
*************9999
,因此结果文本应为:
“您的信用卡号是**********9999
,这真是您的信用卡!”
我怎么能用C#做呢
谢谢
var str = "Your credit card number is 4321432143219999, this is really your credit card!";
var res = Regex.Replace(str, "[0-9](?=[0-9]{4})", "*");
这将搜索后跟至少4位数字的数字,并将其替换为*
(因此它将被123456
愚弄,并在**3456
中更改它)
如果您的信用卡号为16位数字:
var res2 = Regex.Replace(str, @"\b[0-9]{12}(?=[0-9]{4}\b)", new string('*', 12));
这将用12x*
替换一个由12位数字和4位数字组成的块(总共16位)。数字必须用空格或其他非单词字符与其他文本隔开。因此,1234567890123456
不好,1234567890123456A也不好<代码>1234567890123456,可以,因为,
是非单词字符
这将搜索后跟至少4位数字的数字,并将其替换为*
(因此它将被123456
愚弄,并在**3456
中更改它)
如果您的信用卡号为16位数字:
var res2 = Regex.Replace(str, @"\b[0-9]{12}(?=[0-9]{4}\b)", new string('*', 12));
这将用12x
*
替换一个由12位数字和4位数字组成的块(总共16位)。数字必须用空格或其他非单词字符与其他文本隔开。因此,1234567890123456
不好,1234567890123456A也不好1234567890123456,
可以,因为,
是非单词字符。最好尽可能避免使用正则表达式,因为它们比普通子字符串操作更慢、更难排除故障
public static string HideNumber(string number)
{
string hiddenString = number.Substring(number.Length - 4).PadLeft(number.Length, '*');
return hiddenString;
}
最好尽可能避免使用正则表达式,因为它们比普通的子字符串操作更慢、更难排除故障
public static string HideNumber(string number)
{
string hiddenString = number.Substring(number.Length - 4).PadLeft(number.Length, '*');
return hiddenString;
}
@jsobo我相信OP已经考虑了正则表达式,因为他说“我需要通过正则表达式查找”的示例代码中尝试了什么但没有成功,这将使这成为一个“真正的”问题。这是要求我们做这个人的工作。@jsobo我相信OP已经考虑了正则表达式,因为他说“我需要通过正则表达式查找”示例代码中的哪些尝试过,哪些没有成功,这将成为一个“真正的”问题。这是一个要求我们做这个人的工作。谢谢你的完美解决方案!谢谢你的完美解决方案!好的答案通常包括一点解释,特别是当他们提供的技术解决方案与提问者要求的不同时。好吧,这是我的评论-正则表达式是垃圾,尽可能不要使用它。好的答案通常包括一点解释,特别是当他们提供的技术解决方案与提问者要求的不同时。好吧,这是我的评论-正则表达式是垃圾,尽可能不要使用它。