2013-02-17 2 views
0

SMS 메시지에 데이터베이스를 유지하기 전에 SMS 메시지에 마스크가있는 경우 (예 : 암호) SMS 게이트웨이를 구축 중입니다. 여기 Regex를 사용하여 문자열에서 일부 여분의 텍스트 제거

코드입니다 :

String message = "Your password is [MASK:1234]!"; 

boolean bMasked = message.matches("(\\[MASK:)*(\\])"); 
String plainText = message.replaceAll(..., ""); 
String withStars = message.replaceAll("...", "*"); 

System.out.println("bMasked: " + bMasked); 
System.out.println("plainText: " + plainText); 
System.out.println("withStars: " + withStar); 

정규 표현식 나의 지식은 가난한, 그래서 다음과 같은 출력을 얻을 수 있다면 나는 당신의 도움이 필요합니다 :

bMasked: true 
plainText: Your password is 1234! 
withStars: Your password is ****! 
+2

정말로 저장 하시겠습니까? 암호에는 문자만큼 별이 있습니까? 이것은 보안 현명하지 않습니다. 암호를 해독하기 위해이 정보를 얻는 것에는 너무 많은 힌트가 있습니다. – m0skit0

+0

@ m0skit0 +1 맞습니다. 길이가 같아서는 안됩니다. –

+0

어쨌든 가면 (고맙게도) 가려 질 경우 SMS에 암호에 관한 해당 줄을 포함시키는 이유는 무엇입니까? – kjetilh

답변

1
String message = "Your password is [MASK:1234]!"; 

boolean bMasked = message.matches(".*\\[MASK:[^\\]]*\\].*"); 
String plainText = message.replaceAll("\\[MASK:([^\\]]*)\\]", "$1"); 
String withStars = message.replaceAll("\\[MASK:[^\\]]*\\]", "******"); 

System.out.println("bMasked: " + bMasked); 
System.out.println("plainText: " + plainText); 
System.out.println("withStars: " + withStars); 

당신을 제공을 :

bMasked: true 
plainText: Your password is 1234! 
withStars: Your password is ******! 
+0

+1 완벽합니다. 감사! –

+0

흠,'!'는 마스크의 일부가 아닙니다. 제거하면'bMasked'가'false'가됩니다. –

+0

@ Eng.Fouad match는 "Returns : 이 문자열이 주어진 정규 표현식과 일치하는 경우에만 true입니다."! "는 문자열의 일부이기도합니다. 원하는게 뭐야? – Kent

관련 문제