특정 문자를 다른 문자로 바꾸기 (replace, replaceAll, replaceFirst)

wnajsldkf·2022년 6월 29일
0

Java

목록 보기
5/19
post-thumbnail

로또 1단계 미션을 반영하면서 공백을 제거하기 위해 replaceAll을 사용하였다.
이에 대해 replacereplaceAll의 차이가 무엇인지 피드백을 받았다.

어... 뭐지? 뭘까? 찾아봐야겠다!

먼저 자바의 문자열은 불변(Immutable Object)이다. 불변객체는 재할당은 가능하지만, 한번 할당하면 내부 데이터를 변경할 수 없은 객체를 말한다. 따라서 자바에서는 문자열을 수정할 때, 원본은 그대로이고 바뀐 문자열을 반환값으로 받아야 한다.

String str = "ABC";						// 원본 
String text = str.replace('C','D');		// 문자열을 수정하고 반환된 값을 할당

replace(), replaceAll(), replaceFirst() 메서드를 확인해보면 모두 String으로 값을 반환하는 것을 확인할 수 있다.

replace()

public String replace(char oldChar, char newChar)

Char 타입의 인자를 받아, oldCharnewChar로 바꾼다.

public replace(CharSequence target, CharSequence replacement)

CharSequence 타입의 객체를 받아 수정한다. CharSequence는 char값을 읽을 수 있는 시퀀스로 이를 구현하여(implements) String, SpanneableStringBuilder, StringBuilder, StringBuffer 등이 만들어졌다. 따라서 다형성에 따라 String 타입을 받을 수 있다.

String str = "오늘 날씨는 흐림입니다.";
String text = str.replace("흐림", "맑음");
System.out.println(text);

결과) 오늘 날씨는 맑음입니다.

replaceAll()

public String replaceAll(String regex, String replacement)

regex 즉, 정규표현식을 사용해서 매치되는 문자열을 바꾼다. 정규표현식은 문자열에서 공백, 숫자 등 패턴을 찾을 때 도움을 주는 식을 말한다.
우리는 공백을 찾아 제거하는 것이 목적이었기 때문에 \\s를 사용할 수 있다. 아무래도 공백이 여러 형태로 입력될 수 있으니 이 방법이 좋을 것 같다.

String str = "공백  제거";
String text = str.replaceAll("\\s","");
System.out.println(text);
결과) 공백제거

replaceFirst()

public String replaceFirst(String regex, String replacement)

문자열내에 있는 정규식과 매치되는 첫번째 문자열만 바꿔서 반환한다.

String str = "가나다가나다가나다라";
String text = str.replaceFirst("가나다", "마바사");
System.out.println(text);	
결과) 마바사가나다가나다라

알게된 내용을 전달하면서 사용하고 있는 메서드의 파라미터에 대해 제대로 알고 사용해야겠다라는 생각을 했다.

Reference

profile
https://mywnajsldkf.tistory.com -> 이사 중

0개의 댓글