오늘은 문자열에서 문자를 다루는 방법을 알아보자!
Contents
- String 클래스
- 문자열에서 특정 문자만 변경하기 - toCharArray 메서드
- 특정 문자열 치환하기 - replace, replaceAll, replaceFirst 메서드
1. String 클래스
String 클래스는 자바에서 문자열을 다루는 가장 기본적인 방법이다.
String str = "Hello world!";
String str = new String("Hello World!");
String은 레퍼런스형이지만 첫 번째 코드와 같이 기본 자료형처럼 사용해도 무관하다.
어쨌든 중요한 점은 String 객체는 불변(immutable)하다는 것이다. 즉 한 번 생성한 문자열은 변경할 수 없다.
따라서 문자열 안의 내용을 변경하고 싶다면 toCharArray(), replace()와 같은 메서드를 사용해야 한다.
2. 문자열에서 특정 문자만 변경하기 - toCharArray 메서드
String 객체를 문자(char) 배열로 변경한 후, 그 배열의 원소를 변경하여 다시 String으로 변환하는 방법이다.
toCharArray() 메서드는 String을 char 배열로 바꿔준다. 배열은 수정이 가능하기 때문에 특정 문자만 변경하는 데 용이하다.
(String은 큰 따옴표" ", char은 작은 따옴표' '를 사용한다는 것도 잊지 말자. toCharArray() 메서드를 사용해 문자 배열로 변경한 뒤 큰 따옴표를 사용하여 문자를 수정하려고 하면 컴파일 에러가 난다.)
char [] 배열이름 = 문자열.toCharArray();
다음의 예제 코드를 보자.
public class HelloWorld
{
public static void main(String[] args)
{
String str = "Hello World";
// 문자열 배열로 변환 후 수정
char [] strArray = str.toCharArray();
strArray[2] = ' ';
strArray[8] = ' ';
// 변경된 문자 배열을 새 문자열로 만듦
String newStr = new String(strArray);
// 변화를 보기 위해 출력
System.out.println("원본 문자열 : " + str);
System.out.println("변경 후 문자열 : " + newStr);
}
}
원본 문자열 : Hello World
변경 후 문자열 : He lo Wo ld
3. 특정 문자열 치환하기 - replace, replaceAll, replaceFirst 메서드
문자열의 일부분을 치환할 때 사용하는 메서드이다. 단, 치환된 결과는 새로운 문자열로 만들어진다.
1) replace 메서드 - 문자열에서 특정 문자(문자열)를 찾아 새로운 문자(문자열)로 치환한다.
원본문자열.replace(기존 문자/문자열, 바꿀 문자/문자열)
이때 일치하는 기존 문자나 문자열이 모두 바뀐다. 다음의 예제 코드를 보자.
public class HelloWorld
{
public static void main(String[] args)
{
String str = "안녕안녕안녕하세요";
str = str.replace("안녕", "바이");
System.out.println(str);
}
}
// 출력 결과
바이바이바이하세요
"안녕"이 모두 "바이"로 바뀌었다.
2) replaceAll 메서드 - 치환하고자 하는 부분 문자열을 정규식으로 기술하기
원본문자열.replaceAll(정규식, 바꿀 문자/문자열)
다음의 예제 코드를 보자.
public class HelloWorld
{
public static void main(String[] args)
{
String str = "Hello, Java!";
// 정규식을 사용해 모든 모음을 '*'로 대체
String newStr = str.replaceAll("[AEIOUaeiou]", "*");
System.out.println("원본 문자열 : " + str);
System.out.println("바뀐 문자열: " + newStr);
}
}
원본 문자열 : Hello, Java!
바뀐 문자열: H*ll*, J*v*!
정규식에 따라 모든 모음이 *로 바뀌었다.
- replace 메서드 : 단순히 문자나 문자열을 치환
- replaceAll 메서드 : 정규식을 이용해 패턴을 대체하는 느낌
3) replaceFirst 메서드 - 문자열에서 첫 번째로 일치하는 부분을 치환하기
replace와 replaceAll 메서드는 일치하는 모든 부분 문자열을 치환하는 반면, replaceFirst는 일치하는 부분 문자열 중 첫 번째 것만 치환한다.
원본문자열.replaceFirst(기존 문자/문자열, 바꿀 문자/문자열)
원본문자열.replaceFirst(정규식, 바꿀 문자/문자열)
위에서 사용했던 코드를 replaceFirst 메서드로 바꿔보자.
public class HelloWorld
{
public static void main(String[] args)
{
String str = "안녕안녕안녕하세요";
str = str.replaceFirst("안녕", "바이");
System.out.println(str);
}
}
// 실행 결과
바이안녕안녕하세요
첫 번째 "안녕"만 "바이"로 바뀌었다.
'Programming > JAVA' 카테고리의 다른 글
[Java] 문자열의 시작과 끝 검사하기 - startsWith, endsWith (3) | 2025.01.24 |
---|---|
[Java] 문자열 비교하기 (==, equals, compareTo) (3) | 2025.01.22 |
[Java] foreach문 사용하기 (0) | 2025.01.12 |
[Java] 문자 하나만 입력받기 (0) | 2025.01.12 |
[Java] 난수(Random number) 생성하기 (1) | 2025.01.12 |