본문 바로가기
Programming/JAVA

[Java] 문자열에서 특정 문자 바꾸기

by 이브(Eve) 2025. 1. 22.

오늘은 문자열에서 문자를 다루는 방법을 알아보자!


Contents

  1. String 클래스
  2. 문자열에서 특정 문자만 변경하기 - toCharArray 메서드
  3. 특정 문자열 치환하기 - 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);
    }
}
// 실행 결과
바이안녕안녕하세요

첫 번째 "안녕"만 "바이"로 바뀌었다.