오늘 공부한 내용
- 스프링 숙련주차 재시청
- 코드카타 문제 토의
- 코드카타 2문제
새로 알게된점
* replace 메서드, replaceAll 메서드
코드카타 문제 푸는 도중 새로운 메서드를 알게 되었다.
replace 메서드 란 문자열의 특정 문자를 지정 문자로 대체 후, 문자열 반환하는 메서드이다
작성시 replace(찾을문자열, 바꿀문자열) 형태로 파라미터 안에 내용을 적어주면 되는데
예시로
class pratice{
public static void main(String[] args){
String str = "I have a pen. I have an apple.";
str = str.replace("I", "You");
System.out.println(str); // You have a pen. You have an apple.
}
}
적으면 "I"에 해당하는 글자를 "You" 로 바꾸어서 출력한다.
replaceAll 메서드 는 replace 메서드 와 동일하게 작동한다.
사실 replace 부분을 replaceAll 로 바꾸어도 상관은 없다.
다만 차이점이 무엇이나면 둘이 들어가는 인자값이 다르게 적용이 된다.
String replace (CharSequnce target, CharSequence replacement)
String replaceAll (String regex, String replacement)
위 처럼 replace는 인자값이 CharSequnc 형태로, replaceAll 인자값은 String 으로 적용되는데 여기서
replaceAll 경우 첫번재 값이 regex 라는 정규식 형태로 값이 들어가게 된다.
정규식으로 처리한다면 불특정 문자열을 변환할수 있는 장점이 있습니다.
예시 로
class pratice{
public static void main(String[] args){
String str = "aaabbbccccabcddddabcdeeee";
String result1 = str.replace("abc", "왕");
String result2 = str.replaceAll("[abc]", "왕");
System.out.println("replace result->"+ result1);
System.out.println("replaceAll result->"+ result2);
}
}
// replace result -> aaabbbcccc왕dddd왕deeee
// replaceAll result -> 왕왕왕왕왕왕왕왕왕왕왕왕왕dddd왕왕왕deeee
이런 형식으로 replace 메서드는 정해진 값만 일부 변강하게된다
여기서 [abc]는 정규식 표현으로 [abc]는 []안에 있는 문자들을 전부 왕으로 변환시켜준다.
즉 a , b , c 3가지의 문자를 만나면 전부 치환대상이 되는것이다.
여기서 만약 replace를 정규식을 사용하지 않고 replaceAll 와 같은 동일한 값을 얻고 싶다면
class prac{
public static void main(String[] args){
String str = "aaabbbccccabcddddabcdeeee";
String result1 = str.replace("a", "왕").replace("b", "왕").replace("c", "왕");
String result2 = str.replaceAll("[abc]", "왕");
System.out.println("replace result->"+ result1);
System.out.println("replaceAll result->"+ result2);
}
}
// replace result -> 왕왕왕왕왕왕왕왕왕왕왕왕왕dddd왕왕왕deeee
// replaceAll result -> 왕왕왕왕왕왕왕왕왕왕왕왕왕dddd왕왕왕deeee
위처럼 replace에 들어가는 인자값을 하나하나 일일히 적어주어야만 적용이 되게 된다.
느낀점
코드 카타를 점점 하다보면 정말 사람들이 이렇게 하면 적용할수 있구나 싶을정도로 다양한 방법이 나온다.
지금은 문제를 해결하기 보다는 작성하기위하여 다양한 메서드를 익혀놓아야 추후에 문제를 풀시 다양한 접근방법으로 적용하여 풀수있도록 반복 암기하 중요할거 같다.