2017-11-22 5 views
2

전자 메일 마스킹 방법이 있습니다. 전자 메일의 문자를 @ 별 앞에 교체해야합니다. 그러나 문제는 항상 정확하게 별 5 개가 있어야하며 첫 번째 요소와 마지막 요소가 숨겨져서는 안된다는 것입니다. 샘플 입력은 [email protected]입니다. 출력 : s*****[email protected] 전자 메일의 처음과 마지막 문자 사이의 문자 수는 중요하지 않습니다. 여기 내 코드는 다음과 같습니다.ReplaceAll을 정의 된 대체 번호로 Java

public static String maskEmail(String inputEmail){ 
    return inputEmail.replaceAll("(?<=.).(?=[^@]*[email protected])", "*"); 
} 

내 방법은이 전자 메일을 마스크하지만 문제는 5 별을 정확히 넣는 방법을 모르는 것입니다.

불과 5, 별표 및 @ 전에 편지에서 시작하는 문자열와 함께 첫 글자를 가지고 연결하는 훨씬 간단 할 것

답변

5

:

public static String maskEmail(String inputEmail) { 
    return inputEmail.substring(0, 1) + 
      "*****" + 
      inputEmail.substring(inputEmail.indexOf('@') - 1); 
} 
+1

, 감사합니다! – Cassie

+0

읽기 쉽고 정규식 기반 솔루션보다 효율적입니다. +1 – ApproachingDarknessFish

2

이 코드를보십시오 : 실제로

import java.util.Arrays; 

public class HelloWorld{ 

    public static String StrToAsterisk(String email){ 
     if (email == null) return ""; 

     int flag = email.indexOf("@"); 
     if (flag < 0) return ""; 

     StringBuilder sb = new StringBuilder(); 
     sb.append(email.charAt(0)); 
     sb.append("*****"); 
     sb.append(email.substring(flag-1)); 
     return sb.toString(); 
    } 

    public static void main(String []args){ 
     System.out.println(StrToAsterisk("[email protected]")); 
     //input : [email protected] 
     //output: s*****[email protected] 
    } 
} 
+0

OP는 특별히 별 5 개를 요구했습니다. – shmosel

+0

@shmosel, 코드를 수정했습니다. 감사합니다. – anto

관련 문제