Java | split(""), toCharArray(), charAt(i), chars(IntStream) | 문자열 한 글자씩 분리하기

박예선·2023년 4월 1일
0

Java

목록 보기
4/6
post-thumbnail

코딩테스트 연습을 하다보니 문자열을 하나씩 분리하게 되는 경우가 꽤 많았다.
나는 습관적으로 가장 익숙한 String.split("")을 사용하곤 하는데
다른 풀이를 보니 다양한 방법이 있어서 정리해본다

하나씩 특징을 알아보고 마지막에 한번에 볼 예정
바쁘신 분은 가장 아래로,,,

추가로 좋은 방법이 있거나 틀린 부분이 있으면 언제든 댓글 남겨주세요
피드백은 사랑입니다 👍


1. String.split("")

String.split(x)은 지정된 문자열 x를 기준으로 문자열을 나누는 메서드.
split("")을 한다는 것은 결국 문자열을 한 글자씩 나눈다는 것!

2. String.toCharArray()

문자열을 한 글자씩 나눠 char 타입의 배열에 담아 반환하는 메서드.

  • 배열을 생성하여 처리하기 때문에 속도가 느리다.

(그럼 1번 방법도 속도가 느린 방법 중 하나인가?라는 의문이 들지만
아직 정확한 정보를 찾지 못해서 보류. 알게 되면 추가할 예정)

3. String.charAt(i)

문자열의 인덱스 i에 해당하는 문자를 char타입으로 반환하는 메서드.

  • 한글자씩 반환하며
  • toCharArray() 메서드에 비해 내부적인 처리속도가 빠르다고 한다. (배열을 생성하지 않기 때문에)

4. Stream 이용

  1. chars() 메서드를 이용해 IntStream화 한 후,
  2. char 타입의 스트림으로 변환,
  3. forEach를 이용해 한 글자씩 분리
    (예제에선 한 글자씩 분리 후 출력)

전체 코드 보기

String str = "MyString"; // 한 글자씩 분리해줄 문자열

// 1. String.split("")
for (String s : str.split("")) {
	System.out.print(s + " ");
}
        
// 2. String.toCharArray()
for (char c : str.toCharArray()) {
	System.out.print(c + " ");
}

// 3. String.charAt(i)
for (int i = 0; i < str.length(); i++) {
	System.out.print(str.charAt(i) + " ");
}

// 4. Stream 이용
str.chars() // (IntStream)
		.mapToObj(i -> (char) i) // Stream<Character> 으로 변환
        .forEach(i -> System.out.print(i + " ")); // 출력
        
// 위 방법들은 모두 아래와 같은 결과가 출력됩니다
// M y S t r i n g

profile
개발 좋아 lynn08082@gmail.com

0개의 댓글