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 |