사이먼's 코딩노트

[Java] 문자열을 다루는 String 클래스 메서드 본문

Java/Java

[Java] 문자열을 다루는 String 클래스 메서드

simonpark817 2024. 3. 13. 00:55

[String 클래스 메서드]

  • 이번에는 Java에서 문자열을 다루는 String 클래스의 메서드 종류에 대해 몇 가지 알아봅시다.
  • String 클래스는 문자열의 추출, 비교, 찾기, 분리, 변환 등과 같은 다양한 메서드를 가지고있다.
  • 그 중에서도 사용 빈도수가 높은 메서드를 소개하려 한다.

사용 빈도수가 높은 String 클래스 메서드

 

[charAt()]

  • charAt() 메서드는 문자열에서 매개변수로 받은 index 번호에 위치한 문자를 리턴한다.
  • 여기서 말하는 index 번호는 0부터 시작한다.
  • 예를 들어 str = "abcde" 에서 str.charAt(2)를 호출하면 2번째 위치한 문자 'c'를 의미한다.

 

[equals()]

  • 우리가 보통 알고있는 기본 타입(int, char, long, double 등)은 연산자 '==' 을 통해 변수의 값을 비교할 수 있지만 String과 같은 문자열은 연산자를 통해 비교하면 원하지 않는 결과가 나올 수 있다.
  • 이 때, equals()을 사용하여 두 String 객체의 문자열만을 비교할 수 있다.
  • 리턴 타입은 참과 거짓을 나타내는 boolean이다.

 

[getBytes()]

  • getBytes() 메서드는 시스템의 기본 문자셋으로 인코딩된 바이트 배열을 리턴한다.
  • 만약 특정 문자셋으로 인코딩된 바이트 배열을 얻으려면 매개변수를 가진 getBytes() 메서드를 사용하면 된다.
  • 어떤 문자셋으로 인코딩하느냐에 따라 바이트 배열의 크기가 달라진다.

 

[indexOf()]

  • indexOf() 메서드는 문자열에서 매개변수로 받은 특정 문자열로 시작되는 index 번호를 리턴한다.
  • 만약 주어진 특정 문자열이 포함되어 있지 않으면 자동으로 -1을 리턴한다.
  • 예를 들어 str = "abcde" 에서 str.indexOf("de")를 호출하면 abcde에서 de로 시작하는 부분이 str의 3번째 위치이기 때문에 3이 리턴된다.

 

[length()]

  • length() 메서드는 문자열의 총 길이를 리턴한다.
  • 예를 들어 str = "사이먼's 코딩노트" 에서 str.length()를 호출하면 공백을 모두 포함하여 10이 리턴된다.

 

[replace()]

  • replace() 메서드는 매개변수로 target과 replacement 두 가지를 받는데 주어진 문자열에서 target과 동일한 문자열을 찾아 해당 문자열을 replacement로 대체해준다.
  • 예를 들어 str1 = "good morning" 에서 str1.replace("morning", "evening")를 호출하면 str1 문자열에서 morning 이라는 문자열을 찾아 해당 문자열을 evening으로 대체해준다.

 

[substring()]

  • substring() 메서드는 주어진 index 번호에서 문자열을 추출한다.
  • substring() 메서드는 매개변수를 한개만 받기도 하고 두개를 받기도 한다.
  • substring(int beginIndex)는 전체 문자열에서 beginIndex 번째부터 끝까지의 문자열을 추출한다.
  • 예를 들어 str = "가나다라마바사" 에서 str.substring(3)을 호출하면 "라마바사" 가 리턴된다.
  • substring(int beginIndex, int endIndex)는 전체 문자열에서 beginIndex 번째부터 endIndex 번까지의 문자열을 추출한다.
  • 예를 들어 str = "가나다라마바사" 에서 str.substring(2, 4)을 호출하면 "다라마" 가 리턴된다.

 

[toLowerCase(), toUpperCase()]

  • toLowerCase() 메서드는 문자열 모두를 소문자로 바꾸고, 바뀐 새로운 문자열을 리턴한다.
  • 예를 들어 str = "AbCDe" 에서 str.toLowerCase()를 호출하면 "abcde"가 리턴된다.
  • toUpperCase() 메서드는 문자열 모두를 대문자로 바꾸고, 바뀐 새로운 문자열을 리턴한다.
  • 예를 들어 str = "AbCDe" 에서 str.toLowerCase()를 호출하면 "ABCDE"가 리턴된다.

 

[trim()]

  • trim() 메서드는 문자열의 앞뒤 공백을 제거하고 제거한 새로운 문자열을 리턴한다.
  • trim() 메서드는 전체 문자열의 앞뒤 공백만 제거할 뿐이지 중간에 존재하는 공백까지 제거하지는 않는다.
  • 예를 들어 str = " abc defg " 에서 str.trim()를 호출하면 "abc defg"가 리턴된다.

 

[valueOf()]

  • valueOf() 메서드는 기본 타입의 값을 문자열로 변환하는 기능을 가지고있다.
  • String 클래스에는 매개변수의 타입별로 valueOf() 메서드가 오버로딩 되어있다.
  • 예를 들어 static String valueOf(char c) 같이 호출하면 기본 타입 char로 선언된 c 문자를 문자열로 변환한다.

 

[문제]

  • 위에서 String 클래스의 주요 메서드를 살펴봤으니 관련된 문제를 풀어봅시다.
  • 주어진 코드에서 선언된 문자열에 알파벳 'x'의 개수가 몇 개인지 세도록 코드를 완성해봅시다.
public class Main {
    public static void main(String[] args) {
        String str = "axslekjxxlkzksazkxxasjzXXXXzakox";

        int xCount = 0;

        System.out.println("xCount : " + xCount);
    }
}

 

[문제 정답]

public class Main {
    public static void main(String[] args) {

        String str = new String("axslekjxxlkzksazkxxasjzXXXXzakox");

        int xCount = 0;

        for(int i = 0; i < str.length(); i++) {
            if(str.charAt(i) == 'x' || str.charAt(i) == 'X') {
                xCount++;
            }
        }
            
        // 문제의 정답
        System.out.println("xCount : " + xCount);

        // str의 총 길이
        System.out.println(str.length());

        // str 문자열에서 5번째 위치에 해당하는 문자
        System.out.println(str.charAt(5));

        // str 문자열에서 3번째 부터 8번째 인덱스 전까지의 문자열
        System.out.println(str.substring(3, 8));

        // str 문자열에서 "axslek"을 타겟으로 하고 해당 문자열을 "12345"로 변경
        System.out.println(str.replace("axslek", "12345"));

        // str 문자열에서 XXXX로 시작하는 부분이 몇 번째 인덱스?
        System.out.println(str.indexOf("XXXX"));
    }
}
  • 문제는 전체 문자열 str에서 알파벳 'x'가 몇 개나 있는지 세어보는 것을 요구하고 있다.
  • 여기서는 반복문을 사용하여 문자열의 0번째 부터 마지막 인덱스 번호까지 하나씩 문자를 검사하는 방법을 적용할 수 있다.
  • 먼저 전체 문자열의 마지막 인덱스 번호를 알기 위해서는 length()를 사용하여 총 길이를 얻는다.
  • 반복문에서 인덱스는 0번째부터 str.length() 까지 1씩 증가하면서 전체 문자열을 체크할 수 있도록 한다.
  • 그리고 조건문을 통해 각 문자가 알파벳 x와 일치하면 xCount라는 변수에 1씩 카운트를 해준다.
  • 이 때 각 문자가 알파벳 x와 일치한지 아닌지를 확인하는 메서드는 charAt()을 사용한다.
  • str.charAt(i) == 'x'를 통해 i번째 있는 문자가 알파벳 x랑 같은지 비교한다. 
  • 필자는 소문자 x와 대문자 X 모두 일치하다면 xCount에 1씩 카운트를 해줬다.
  • 이 외에 위에서 설명된 몇 가지 메서드에 대해 주석과 함께 출력문으로 원하는 값들을 출력해보았으니 참고하면 좋을 것 같다.
반응형

'Java > Java' 카테고리의 다른 글

[Java] 형변환 문제풀이  (0) 2024.03.13
[Java] 형변환(래퍼클래스 / Object)  (0) 2024.03.13
[Java] static  (0) 2024.03.12
[Java] super / final / switch  (0) 2024.03.12
[Java] 생성자 문제풀이  (0) 2024.03.12