[java] 문자열을 문자열 배열로 분할

문자열을 단일 문자 문자열의 배열로 분할해야합니다.

예를 들어, “cat”을 분할하면 “c”, “a”, “t”가 배열됩니다.



답변

"cat".split("(?!^)")

이것은 생산할 것입니다

배열 [ “c”, “a”, “t”]


답변

"cat".toCharArray()

하지만 문자열이 필요한 경우

"cat".split("")

편집 : 빈 첫 번째 값을 반환합니다.


답변

String str = "cat";
char[] cArray = str.toCharArray();


답변

Basic Multilingual Plane 이외의 문자 가 입력에 예상되는 경우 (일부 CJK 문자, 새로운 이모티콘 …), 다음과 같은 접근 방식은 "a?b".split("(?!^)")사용할 수 없습니다 array ["a", "?", "?", "b"].

"a?b".codePoints()
    .mapToObj(cp -> new String(Character.toChars(cp)))
    .toArray(size -> new String[size]);


답변

문자열을 한 문자 문자열의 배열로 바꾸는 효율적인 방법은 다음과 같습니다.

String[] res = new String[str.length()];
for (int i = 0; i < str.length(); i++) {
    res[i] = Character.toString(str.charAt(i));
}

그러나 이것은 chara String가 실제로 유니 코드 코드 포인트의 절반을 나타낼 수 있다는 사실을 고려하지 않습니다 . (코드 포인트가 BMP에없는 경우)이를 처리하려면 코드 포인트를 반복해야합니다. 더 복잡합니다.

이 접근 방식 String.split(/* clever regex*/)은를 사용하는 것보다 빠르며 Java 8 이상 스트림을 사용하는 것보다 빠를 것입니다. 이보다 빠를 가능성이 있습니다.

String[] res = new String[str.length()];
int 0 = 0;
for (char ch: str.toCharArray[]) {
    res[i++] = Character.toString(ch);
}  

문자를 새 배열 toCharArray복사 해야 하기 때문 입니다.


답변

다른 답변을 요약하면 …

이것은 모든 Java 버전에서 작동합니다.

"cat".split("(?!^)")

이것은 Java 8 이상에서만 작동합니다.

"cat".split("")


답변

아마도 String 내용을 통과하는 for 루프를 사용하고 charAt메서드를 사용하여 문자별로 문자를 추출 할 수 있습니다 .

ArrayList<String>예를 들어와 결합 하면 개별 문자 배열을 얻을 수 있습니다.