我有一些內部帶有信用卡號碼的文本,如: 「您的信用卡號碼是4321432143219999,這真的是您的信用卡!」C#RegEx。替換文本中的信用卡
我需要通過正則表達式來找到這個數量和************9999
替換它,所以結果文本應爲: 「你的信用卡號碼是************9999
,這真的是你的信用卡!」
如何在C#中執行此操作?
謝謝!
我有一些內部帶有信用卡號碼的文本,如: 「您的信用卡號碼是4321432143219999,這真的是您的信用卡!」C#RegEx。替換文本中的信用卡
我需要通過正則表達式來找到這個數量和************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));
這將替換,接着4位的12位的塊(這樣總共16位)與12倍*
。數字必須與空格或其他非單詞字符分開。所以A123456789
不好,因爲不是123456789A
。 123456789,
是可以的,因爲,
是非單詞字符。
謝謝你的完美解決方案! – ihorko 2012-03-14 12:06:40
儘可能避免使用正則表達式,因爲它們比普通的子字符串操作更慢,更難以排除故障。
public static string HideNumber(string number)
{
string hiddenString = number.Substring(number.Length - 4).PadLeft(number.Length, '*');
return hiddenString;
}
好的答案通常包括一些解釋,特別是當他們提供了不同的技術解決方案而不是提問者所要求的。 – 2014-06-18 10:32:51
好,所以這是我的意見 - 正則表達式是廢話,不要使用它,當你可以。 – Tommix 2014-06-19 11:13:18
[你嘗試過什麼?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) – 2012-03-14 11:31:20
@jsobo我相信OP已審議,因爲正則表達式(s)他說:「我需要通過正則表達式」 – Robbie 2012-03-14 11:37:25
什麼是嘗試和沒有工作的示例代碼將使這是一個「真正」的問題。這是要求我們做這個人的工作。 – 2012-03-14 13:03:20