문자열을 단일 문자 문자열의 배열로 분할해야합니다.
예를 들어, “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));
}
그러나 이것은 char
a 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>
예를 들어와 결합 하면 개별 문자 배열을 얻을 수 있습니다.