2011-07-26 2 views
2

문자열에서 SSN을 마스크하는 방법은 무엇입니까?정규 표현식을 사용하여 문자열에서 SSN을 마스크하는 방법

나는 다음과 같은 시나리오를 가지고 있어요

string str1 = "asdasfasdfasdf sfhagfdad SSN:123456789"; 

나는 아래의 코드

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

내가 캡처 실종 생각 했어요

"asdasfasdfasdf sfhagfdad SSN:*********" 내 필요한 출력 : 당신이 수 "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:***" 
관련 문제