본문 바로가기

내배캠/TIL

24. 07. 31

Java

 

  • isLetter()

Character 클래스의 메소드 중 isLetter()를 사용하면 매개변수로 넘어온 문자가 문자인지 아닌지 boolean 값을 반환해준다.

 

public class Test {

   public static void main(String args[]) {
      System.out.println(Character.isLetter('c'));
      System.out.println(Character.isLetter('5'));
   }
}

 

[결과]

true
false

 

 

  • replaceAll()

https://school.programmers.co.kr/learn/courses/30/lessons/81301

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

프로그래머스에 있는 숫자 문자열과 영단어 문제이다.

 

나는 map으로 영단어와 숫자를 key, value 값으로 매핑한 후 문자열의 인덱스를 늘리면서 만약 문자이고 map의 키로 가져온 값이 null이 아니라면 해당 문자열을 substring으로 자른 후 stringbuilder에 붙이는 식으로 굉장히 어렵게 풀었는데 replaceAll을 사용한 아주 간단한 해결법이 있었다.

 

class Solution {
    public int solution(String s) {
        int answer = 0;
        StringBuilder sb = new StringBuilder("");
        String[] digits = {"0","1","2","3","4","5","6","7","8","9"};
        String[] alphabets = {"zero","one","two","three","four","five","six","seven","eight","nine"};

        for(int i=0; i<10; i++){
            s = s.replaceAll(alphabets[i],digits[i]);
        }

        return Integer.parseInt(s);
    }
}

 

첫 번째 매개변수로 넘어온 값과 매칭하는 모든 값들을 전부 두 번째 매개변수의 값으로 바꿔주는 함수이다. 머리가 나빠서 손가락만 고생했다.

 

replace()라는 함수도 있는데 차이점은 replace()는 CharSequence 이고 replaceAll()은 String이라는 것, 이때 String이라는 것은 regular expression 즉, 정규 표현식이라고 부르는 형식의 인자값을 사용할 수 있다는 것이다. 

 

String str2 = "abcdefghijk";

System.out.println(str2.replaceAll("[abchij]", "z")); //zzzdefgzzzk
System.out.println(str2.replace("a", "z").replace("b", "z").replace("c", "z").replace("h", "z").replace("i", "z").replace("j", "z")); //zzzdefgzzzk


// 정규표현식을 활용해 원하는 문자열을 제외하고 치환
System.out.println(str2.replaceAll("[^abchij]", z)) // abczzzzhilz

 

위처럼 여러 문자를 한 번에 치환하길 바라는 경우나 불특정 입력값을 변환하고자 할 때 replaceAll()을 사용한다. 그러나 정규 표현식을 구현하고 싶지 않고 간단한 구문을 구현하고 싶을 때는 replace() 가 replaceAll() 보다 속도가 빠르니 그때 상황에 맞게 사용하도록 하자.

 

 

 

[참고문헌]

https://www.tutorialspoint.com/java/character_isletter.htm

 

Java - isLetter() Method

Java - isLetter() Method - The method determines whether the specified char value is a letter.

www.tutorialspoint.com

https://velog.io/@m1naworld/Java-replace-vs-replaceAll

 

[Java] replace() vs replaceAll()

자바 스트링 관련 함수 중 특정 문자열을 원하는 문자열로 치환하는 함수 > replace() > > replaceAll() > 예제 위의 예제만 보면 두 함수의 차이점은 없어 보이지만,두 함수의 가장 큰 차이점은 입력 인

velog.io

https://mine-it-record.tistory.com/127

 

[JAVA] 자바_replace/replaceAll (문자열 치환)

- replace() / replaceAll() 사용법 및 차이 - replace() - String replace(CharSequence target, CharSequence replacement) - replace() 함수는 대상 문자열을 원하는 문자 값으로 변환하는 함수이다. - 첫번째 매개변수는 변환

mine-it-record.tistory.com

 

 

'내배캠 > TIL' 카테고리의 다른 글

24. 08. 01  (0) 2024.08.01
Git Branch 정리  (0) 2024.07.31
24. 07. 30  (0) 2024.07.30
24. 07. 29  (0) 2024.07.29
24. 07. 27  (0) 2024.07.28