채택된거라 별다른 의미는 없지만 간만에 머리좀 써본지라 올려 봄.

 

 

http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040201&docId=261215988&page=1#answer1

 

질문) 자바 문자열 자르기나 바꾸기 궁금한점이 있습니다.

 

조건

String a = ""; <<문자 길이는 랜덤입니다. (a= "1231232131" 가될수도잇고 a="1231")이 될수도 있습니다.


궁금한점.


a라는 문자열 길이만큼

" * " 를 만드려고 하는데 어떻게해야합니까?


(즉 회원 주민번호 뒷자리중 1자리를 뺀 나머지를 *로 바뀌는거 말하는겁니다.)

ex


홍길동

940011 > 1******


a = "123213123"일경우  > 12********;

a = "1111123"일경우 > 11******;





이렇게 말이죠.

 

 

의견)

 

질문 작성자 2016.09.25. 17:23:16

어.. 감사합니다~. for를 이용해서 저도 만들순 있는데 for 이용안하고 만드는법은 없나해서요~

 

 

답변)

 

아래를 참고해서 만들어 보세요.


1-1.  CLASS



public class t25_000 {
  public static void main(String args[]){
  
    String a = "1vcs24t";  // 바꿔가며 테스트 해보세요.


    int num = a.length();
    String estr = estr(num - 2);
    String mun = a.replaceAll(a.substring(2, num), estr);


    System.out.println(mun);
  }
 
  static String estr(int num){
    String estr = "";
    for(int i = 0; i < num; i++){
      estr += "*" ;
    }
    return estr;
  }
}



1-2. CLASS


import java.util.regex.*;

public class t25_001 {
  public static void main(String args[]){


    Matcher mat;
    Pattern pa = Pattern.compile("[a-zA-Z0-9]");


    String a = "1vcs24t";


    int num = a.length();
    String rep = pa.matcher(a.substring(2, num)).replaceAll("*");
 
    String mun = a.replaceAll(a.substring(2, num), rep);
    System.out.println(mun);

  }

}



2. RUN


1v*****



도움이 되셨기를~

 

 

 

// 위의 1-2 방식은 약점도 있고, 다른 방법도 많지만 귀찮아서..