티스토리 뷰
안녕하세요. 자바에는 문자열을 변환할수 있는 메소드들이 있습니다.
메소드명을 보시면 대충 감이 오실텐데요. 오늘은 replace, replaceAll 두가지 메소드에 대해 자세히 알아보겠습니다.
먼저 사용법을 설명하겠습니다.
replace는 말 그대로 특정 문자열을 원하는 문자열로 치환하는 메소드입니다.
예제를 통해서 알아보겠습니다.
String str = "aaa1";
String result = str.replace("1", "");
System.out.println("result->"+ result);
이렇게 했을때 결과값이 어떤값이 나올까요?
왼쪽 인자값이 찾을문자열 , 오른쪽이 변환될 문자열 입니다.
결국 저 예제문은 str에 있는 문자열 aaa1 중 1을 찾아서 "" 공백으로 변환합니다.
이클립스에서 실행시켜보면 결과값 aaa 가 출력되는걸 확인하실수 있습니다.
그럼 replaceAll을 메소드를 사용하면 어떨까요?
String str = "aaa1";
String result = str.replaceAll("1", "");
System.out.println("result->"+ result);
결과값은 replace사용했을때와 마찬가지입니다.
얼핏 생각해보면 두 메소드는 차이가 없어 보입니다.
하지만 분명한 차이점이 있답니다.
String replace(CharSequnce target, CharSequence replacement)
String replaceAll(String regex, String replacement)
말 그대로 replace는 첫번째 인자값을 보시면 문자열이 들어갑니다. 문자열만 변환가능한데 반해서
replaceAll은 첫번째 인자값에 정규식이 들어갑니다. 정규식에 대해 잘 모르시는 분도 계시겠지만 이부분은 나중에 더 자세히 알아보겠습니다. 정규식을 이용하면 불특정 문자열을 변환할수 있는 장점이 있습니다.
한번 예제를 통해서 알아보겠습니다.
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
결과값을 보시면 replaceAll에는 정규식을 사용할수가 있어서 replace에서 처리하지 못한 문자열도 처리가 가능합니다.
[abc] 정규식 표현입니다. [abc]는 []안에 있는 문자들을 전부 왕으로 변환시켜줍니다. a or b or c 3가지의 문자를 만나면 전부 치환대상이 됩니다. 만약 replace를 정규식을 사용하지 않고 원한는 결과값을 얻기 위해서 코딩을 해보겠습니다.
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로는 불가능한 방법입니다.
replaceAll을 이용하여 정규식을 사용하면 정말 많은걸 할수가 있습니다.
String str = "testa1testbccc2testccc3";
str = str.replaceAll("[^0-9]", "");
System.out.println(str);
해당 정규식을 간단히 알아보겠습니다. 해당 정슈식은 숫자를 찾아주는 정규식입니다.
숫자가 아닌 값은 전부 빈문자열로 치환하라는 의미입니다.
결과값은 123
출력됩니다.
숫자만 찾고자 할때 유용하게 쓰이겠죠..
그럼 약간 변형해서 다시 해보겠습니다.
String str = "testa1testbccc2testccc3";
str = str.replaceAll("[0-9]", "");
System.out.println(str);
해당결과값은
testatestbccctestccc
가 출력됩니다.
이번꺼는 숫자는 전부 빈문자열로 치환해서 문자열만 출력되게 됩니다.
여기까지 보시면 ("[^0-9]", "");, ("[0-9]", "");
두가지 차이점을 아실수 있겠죠.. ^는 아니다를 의미합니다 0-9 0부터 9까지의 숫자가 아닌것을 전부 문자열로 치환하라는 의미죠.
이런식으로 정규식을 이용한다면 편리하게 원하는 결과값을 찾을수 있습니다.
'JAVA(프로그래밍)' 카테고리의 다른 글
java HashMap 사용하는 방법 (0) | 2018.07.24 |
---|---|
Java ArrayList 에 대해 알아보자 (0) | 2018.07.23 |
java indexOf 알아보기 (0) | 2018.01.03 |
자바 내장 데이터형 알아보자 (0) | 2018.01.02 |
java 기초강좌 조건문 알아보자 (0) | 2018.01.02 |
- Total
- Today
- Yesterday
- File Class
- java배열
- java ArrayList
- java substring
- 자바 패키지
- java replaceAll
- java Enumeration
- java iterator
- 자바 랩퍼
- java wrapper
- java tihs
- java Properties
- java StringBuffer
- linkHashMap
- java문자열자르기
- java join
- java treemap
- Java
- 객체파일저장
- java Vector
- java LinkedHashMap
- java 네트워크
- java 노트패드
- java File
- java wrapper class
- java 소켓
- 자바
- java텍스트파일저장
- java문자열저장
- java 메모장
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |