life is egg

계좌번호 만들기 + 마스킹하기 본문

개인공부/삽질

계좌번호 만들기 + 마스킹하기

삶은계란진재혁 2022. 11. 26. 00:25

자바자바를 잡아라

 계좌번호 만들기 일단 절대 겹치지 않아야된다에서 시작

그럼 일정하게 증가하는 변수 + 난수 의 조합이면 절대로 겹칠일이 없겠다라는 생각

 

앞 4자리는 은행 고유번호 + 일정하게 증가하는변수 4자리 +난수 5자리

 

시작~

static int counter = 1;
private String createAccountNum(){
    /* 계좌번호 생성 로직 = 정규 표현식 */
    Random random = new Random();
    int createNum = 0;
    String ranNum = "";
    String randomNum = "";
    for (int i=0; i<5; i++) {
        createNum = random.nextInt(9);
        ranNum = Integer.toString(createNum);
        randomNum += ranNum;
    }
    String onlyBankNum = "8016";
    String countAccountNum = String.format("%04d",counter);

    counter++;
    String accountNum = onlyBankNum+"-"+countAccountNum+"-"+randomNum;
    return accountNum;
}

사실 static으로 선언안해도  됐을 듯 하다라는 생각이 든다 무튼 이렇게 하면 

요렇게 된다!

자자 이제 뒷자리 5자리 마스킹을 해보자

https://develop-sense.tistory.com/62

 

[JAVA] 정규식을 이용한 마스킹(정규표현식 마스킹 처리)

안녕하세요. 소다맛사탕 입니다. 지난 포스팅 '[java] 휴대폰 번호, 계좌번호, 이름 마스킹(masking)'의 버전2, 정규식을 이용한 마스킹을 알아보겠습니다. ※ 정규식(또는 정규표현식) ; 텍스트 데이

develop-sense.tistory.com

요분이 쓴거 참고했다

코드는 이해가 안된다 ! ㅎㅎ;;

public String accountNoMasking(String accountNo){
    // 계좌번호는 숫자만 파악하므로
    String regex = "(^[0-9]+)$";

    Matcher matcher = Pattern.compile(regex).matcher(accountNo);
    if(matcher.find()) {
        int length = accountNo.length();
        if(length >= 5) {
            char[] c = new char[5];
            Arrays.fill(c, '*');

            return accountNo.replace(accountNo, accountNo.substring(0, length-5) + String.valueOf(c));
        }
    }
    return accountNo;
}

일단 문제가 있어서 내가 표현한 형식에 맞게  추가 가공을 해서 써야한다.

여기기준은 숫자만 있는걸로 기준이 되있어서 내가 뽑아낸겄처럼

8016-0001-51651 이렇게 중간에 "-" 이게 들어가 있으면 인식을 못해서 원래값을 리턴해버린다

 

그러면 이제 split 함수를 써서 "-"제거 하고 나온 8016 , 0001 , 51651 을 배열에 담아서 알맞게 조리해주면 된다..!

다시 l 알맞게 호출해주면 된다


22.12.12추가..

 지금생각해보면 위에 굳이 저렇게 까지 할 필요가 있나 싶기도 하다

어차피 자리수는 정해져있고 그냥 String 자르고 뒤에 *****붙여주면 되는거 아닌가?

실전은 자리수가 안정해져있어서 그런거일까 ?

 

모르겠다 굳이 저렇게 할 필요가 있는건가 ! 


public void customerFindAccount(String customerName) {
    for (Account account : accounts) {
        if (customerName.equals(account)) {
            String[] linkedString = account.getAccountNum().split("-");
            System.out.println("이름 : " + account.getOwnerName()
                        + "\n 계좌번호 : " + linkedString[0]+"-"+linkedString[1]+accountNoMasking(linkedString[2])
                        + "\n 잔 액" + account.getBalance()
                        + "---------------------------------------------");
        }
    }
}

이렇게 해서 나오는 결과는

무튼 잘된다

...!

'개인공부 > 삽질' 카테고리의 다른 글

게시글마다 댓글조회하기.  (1) 2022.12.26
삽질 FE  (0) 2022.12.18
투두두두두  (0) 2022.11.06
방명록 기능추가하기..!  (0) 2022.11.03
코멘트 삭제버튼 만들기  (0) 2022.10.31
Comments