2011-07-26 27 views
2

如何屏蔽字符串中的SSN?如何使用正則表達式掩蓋字符串中的SSN

我有以下情形

string str1 = "asdasfasdfasdf sfhagfdad SSN:123456789"; 

我需要的輸出"asdasfasdfasdf sfhagfdad SSN:*********"

我嘗試下面的代碼

Regex ssnRegex = new Regex("(?:\bSSN:\b)(?:[0-9]{3})(?:[0-9]{2})(?:[0-9]{4})"); 
string formattedSSN = ssnRegex.Replace(t1, "SSN:-XXX-XX-XXXX"); 

我覺得我缺少捕捉 「SSN:」 你能請告訴我如何獲得以上輸出

+1

如果您知道輸入的開始位置和結束位置,那麼使用string.replace會更明智一些。在字符串中找到SSN:並用*替換剩餘的字符。 – Asdfg

回答

2

爲什麼不只是使用String.Replace

string str1 = "asdasfasdfasdf sfhagfdad SSN:123456789"; 

//Get starting position 
int position = str1.IndexOf("SSN:") + 4; 

//Extract social 
string ssn = str1.Substring(position, 9); 

//Update string 
str1 = str1.Replace(ssn, "XXX-XX-XXXX"); 
1
Regex.Replace("asdasfasdfasdf sfhagfdad SSN:123456789", @"\d{3}[-]?\d{2}[-]?\d{4}", "***") 
output: "asdasfasdfasdf sfhagfdad SSN:***" 


Regex.Replace("asdasfasdfasdf sfhagfdad SSN:123456789", @"^*SSN:\d{3}[-]?\d{2}[-]?\d{4}", "SSN:***") 
output: "asdasfasdfasdf sfhagfdad SSN:***" 
相關問題