goal
문자열 치환을 돕는 replace()와 replaceAll()을 이해하고 사용법을 숙지한다.
문자열 치환을 어떻게 해야할까?
- 그냥 source에서 바꿔주지 뭐...
사실 틀렸다고 보긴 힘들다. 하지만, 필요에 의해서 많은 문자를 바꿔줘야할 때, 모든 문자열을 바꿔주기에는 큰 어려움이 있을 것이다. 아래에서 설명하겠지만 맛보기 아닌 맛보기를 보고 들어가보자. 아래 코드는 오늘 학습한 내용과 함께 더불어 작성해본 것이다.
- StringReplace.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class StringReplace {
public static void main(String[] args) throws IOException {
while(true) {
String str = "로그인 target !!";
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.printf("id를 입력하세요 : ");
String id = reader.readLine();
System.out.printf("pwd를 입력하세요 : ");
String pwd = reader.readLine();
if ((id.equals("김은철")) && (pwd.equals("1234"))) {
str = str.replace("target", "성공");
System.out.println(str);
break;
} else {
str = str.replace("target", "실패");
System.out.println(str);
System.out.println("------------------------------------------");
}
}
}
}
- StringReplace.java [결과값]
* 문자열 치환, replace() 메소드
1. replace()
public String replace(char oldChar, char newChar)
String.replace(oldChar, newChar)
String의 문자 oldChar를 newChar로 변경한다.
그리고 replace()
의 매력적인 요소하나가 메소드체이닝
을 지원한다는 것이다. (사용예시 참고)
[1] replace() 사용예시
- [1] StringReplace.java [일반사용]
public class StringReplace {
public static void main(String[] args){
String str = "Spring은 Java 백엔드를 다루기 위해 꼭 필요한 기술입니다. Spring을 잘 다루기 위해서 최선의 노력을 기울일 것입니다. Spring...!!";
str = str.replace("Spring", "Springboot");
System.out.println(str);
}
}
- StringReplace.java [결과값]
- [2] StringReplaceMethodChaining.java [메소드체이닝]
public class StringReplaceMethodChaining {
public static void main(String[] args){
String str = "Spring은 Java 백엔드를 다루기 위해 꼭 필요한 기술입니다. Spring을 잘 다루기 위해서 최선의 노력을 기울일 것입니다. Spring...!!";
str = str.replace("Spring", "flask").replace("Java", "python");
System.out.println(str);
}
}
- StringReplaceMethodChaining.java [결과값]
2. replaceAll()
[1] replaceAll() 사용설명
public String replaceAll(String regex, String replacment)
String의 문자 regex를 replacment로 변경한다.
그리고 replaceAll()
의 매력적인 요소하나가 메소드체이닝
을 지원한다는 것이다.
※ 소스코드들의 replace()를 repalceAll()로 바꾸면 사실 똑같이 동작한다. (즉, 메소드 체이닝도 지원)따라서 replaceAll()의 소스코드 사용법은 생략한다.
* replace()메소드와 replaceAll()의 차이점
[Java] 문자열 치환(Replace) 사용법 & 예제, 참고자료 : , https://byul91oh.tistory.com/312, 개꼬[: 개발하는 꼬바리]
- Replace.java
String a = "무궁화. 삼천리. 화려강산. 대한사람. 대한으로. 길이. 보전하세 ";
//replaceAll([정규식],[바꿀문자])
a = a.replaceAll(".", "/");
System.out.println(a);
//결과값 : /////////////////////////////////////
- ReplaceAll.java
String a = "무궁화. 삼천리. 화려강산. 대한사람. 대한으로. 길이. 보전하세 ";
//replaceAll([정규식],[바꿀문자])
a = a.replaceAll(".", "/");
System.out.println(a);
//결과값 : /////////////////////////////////////
※ replaceAll()은 첫 번째 인자로 정규식
을 받을 수 있게 설계되어있다. ReplaceAll.java
의 replaceAll()
첫 번째 인자는 정규식의 한 부호로써 정해진 규칙대로 작용하게 되어 우리가 예상한 값이랑 벗어나게 된 것이다.
※ 정규식은 자바뿐만 아니라 linux에서도 사용되며 개발자 사이에서 자주(?) 쓰인다.
정규식과 관련한 글 :
정규표현식 (Regex) 정리
, https://hamait.tistory.com/342, 소프트웨어 사색
'Java > java' 카테고리의 다른 글
java :) 자바의 메모리 구조 (static, stack, heap) (0) | 2022.05.10 |
---|---|
java :) java에서 정규표현식 사용하기, Pattern 클래스 (0) | 2022.05.10 |
java :) System.arraycopy(), 매개변수가 5개가 들어가?(원본배열, 원본의복사시작점, 복사받을 배열, 복사받을 시작점, 복사받을 끝점) (0) | 2022.05.09 |
java :) 얕은복사와 깊은복사, Arrays.copyOf()와 Arrays.copeOfRange() 사용방법 (0) | 2022.05.09 |
java :) Arrays.toString으로 배열 간편하게 출력하기 ( + 출력할 때 괄호 없애는 방법) (0) | 2022.05.09 |