자바에서 문자열을 문자열 배열로 변환


115

나는이 string = "name"; 내가 문자열 배열로 변환합니다. 어떻게하나요? Java 내장 함수가 있습니까? 수동으로 할 수 있지만 Java 내장 함수를 찾고 있습니다.

문자열의 각 문자가 문자열이되는 배열을 원합니다. char 'n'은 이제 배열에 저장된 문자열 "n"이됩니다.


10
난 당신이 의미하지 않는다 생각 String[] ary = new String[] { "name" };, 어떤 작업이 필요합니까? 예를 들어 문자 분할?
rsp

문자열 배열을 의미합니까? 이를위한 함수를 어떻게 가질 수 있을까요? String [] array = { "Name"}; 아니면 문자 배열을 의미합니까?
Woody

1
문자열의 각 문자가 문자열이되는 배열을 원합니다. char 'n'은 이제 배열에 저장된 문자열 "n"이 될 것입니다
riyana 2010-08-05

답변:


200

할당을 시작하기 String.split위해 정규 표현식에서 문자열을 분할하고이 표현식은 빈 문자열 일 수 있습니다.

String[] ary = "abc".split("");

어레이를 생성합니다.

(java.lang.String[]) [, a, b, c]

빈 첫 번째 항목을 제거하는 것은 독자를위한 연습으로 남겨집니다. :-)

참고 : Java 8에서는 빈 첫 번째 요소가 더 이상 포함되지 않습니다.


21
참고 : jdk8을 사용하면 빈 첫 번째 항목이 더 이상 결과 배열에 포함되지 않습니다. stackoverflow.com/questions/22718744/…를
.

42
String strName = "name";
String[] strArray = new String[] {strName};
System.out.println(strArray[0]); //prints "name"

두 번째 줄은 길이가 1 인 String 배열을 할당합니다. 다음과 같이 길이를 직접 지정할 필요는 없습니다.

String[] strArray = new String[1];

대신 길이는 이니셜 라이저의 요소 수에 의해 결정됩니다. 사용

String[] strArray = new String[] {strName, "name1", "name2"};

길이가 3 인 배열을 만듭니다.


22
실제로 질문에 대답하지 않습니다.
atamanroman 2010-08-05

1
질문의 개정 내역을 확인하면 질문이 편집되기 전에 다른 내용을 요구하는 것을 볼 수 있습니다. 이 답변은 첫 번째 버전에 응답합니다.
f1sh

14

당신이 정말로 단일 문자 문자열의 배열을 원한다고 가정합니다 ( char[]또는 Character[]아님)

1. 정규식 사용 :

public static String[] singleChars(String s) {
    return s.split("(?!^)");
}

너비가 0 인 음의 미리보기는 입력 시작시 패턴 일치를 방지하므로 선행 빈 문자열을 얻지 않습니다.

2. Guava 사용 :

import java.util.List;

import org.apache.commons.lang.ArrayUtils;

import com.google.common.base.Functions;
import com.google.common.collect.Lists;
import com.google.common.primitives.Chars;

// ...

public static String[] singleChars(String s) {
    return
        Lists.transform(Chars.asList(s.toCharArray()),
                        Functions.toStringFunction())
             .toArray(ArrayUtils.EMPTY_STRING_ARRAY);
}

1
그 정규식은 최고의 IMO입니다. 어쨌든 Java 8이 특정 문제를 해결했습니다.
shkschneider

13

나는 그것이 더 간단하지 않을 것이기 때문에 단순히 필요가 없다고 생각합니다.

String[] array = {"name"};

물론 당신이 주장한다면 다음과 같이 쓸 수 있습니다.

static String[] convert(String... array) {
   return array;
}

String[] array = convert("name","age","hobby"); 

[편집] 단일 문자 문자열을 원하는 경우 다음을 사용할 수 있습니다.

String[] s = "name".split("");

불행히도 s [0]은 비어 있지만 그 뒤에는 n, a, m, e 문자가 이어집니다. 이것이 문제라면, 예를 들어 System.arrayCopy를 사용하여 첫 번째 배열 항목을 제거 할 수 있습니다.


문자열의 각 문자가 이제 문자열 자체가되는 배열을 원합니다. char 'n'은 이제 배열에 저장된 문자열 "n"이 될 것입니다
riyana

@Landei 나는이 String date = "2013/01/05"를 가지고 있고 .split ( "/")를 사용할 때 빈 문자열을 [0]으로 반환하지 않고 잘 작동합니다. 내 정규식 스플리터와 귀하의 것 사이에 차이점이 있습니까?
Behzad

@Behzad AFAIK 당신은 빈 패턴에 대해서만 빈 항목이있는 재미있는 동작을 가지고 있으며 일부 구분 기호가 없습니다.
Landei 2013-01-13

@Landei 내가 당신의 의미를 가지고 있음을 알려주십시오. 분할 함수에서 ""만 사용하면 첫 번째 배열 값으로 0이 반환된다는 의미입니까? 예?
Behzad

12
String data = "abc";
String[] arr = explode(data);

public String[] explode(String s) {
    String[] arr = new String[s.length];
    for(int i = 0; i < s.length; i++)
    {
        arr[i] = String.valueOf(s.charAt(i));
    }
    return arr;
}

11

Java 8에는이를 수행 할 수있는 메소드가 있습니다. toCharArray () :

String k = "abcdef";
char[] x = k.toCharArray();

결과는 다음과 같습니다.

[a,b,c,d,e,f]

문자열 배열은 아니지만, String.charAt(0)불필요하게 단일 문자열에 대한 어리석은 액세스 대신 문자가 필요한 경우에 적합합니다 ! ;)
varun

당신은 내 인생을 구할 @fonji
Amit Sharma

5

문자열 배열 = 문자 배열?

아니면 각각 배열 요소가되어야하는 여러 단어가있는 문자열이 있습니까?

String[] array = yourString.split(wordSeparator);


문자열의 각 문자가 문자열이되는 배열을 원합니다. char 'n'은 이제 배열에 저장된 문자열 "n"이 될 것입니다
riyana

4

.toCharArray()Java 에서 메소드를 사용하십시오 .

String k = "abc";
char[] alpha = k.toCharArray();

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



2

를 사용할 수 string.chars().mapToObj(e -> new String(new char[] {e}));있지만 이것은 매우 길고 Java 8에서만 작동합니다. 다음은 몇 가지 추가 메소드입니다.

string.split(""); (Has an extra whitespace character at the beginning of the array if used before Java 8) string.split("|"); string.split("(?!^)"); Arrays.toString(string.toCharArray()).substring(1, string.length() * 3 + 1).split(", ");

마지막은 불필요하게 길고 재미를위한 것입니다!


2

추가 방법 :

이미 언급했듯이 원래 문자열 "이름"을 문자 배열로 아주 쉽게 변환 할 수 있습니다.

String originalString = "name";
char[] charArray = originalString.toCharArray();

이 생각을 계속하려면 char 배열을 String 배열로 변환 할 수 있습니다.

String[] stringArray = new String[charArray.length];
for (int i = 0; i < charArray.length; i++){
    stringArray[i] = String.valueOf(charArray[i]);
}

이 시점에서 stringArray는 원래 문자열 "name"의 원래 값으로 채워집니다. 예를 들어, 지금 전화

System.out.println(stringArray[0]);

이 경우 값 "n"(문자열)을 반환합니다.


2

빈 문자열을 String.split () 로 분할하면 빈 문자열을 포함하는 단일 요소 배열이 반환 됩니다. 대부분의 경우 빈 배열을 가져 오거나 null을 전달한 경우 null을 선호 할 것입니다. 이는 org.apache.commons.lang3.StringUtils.split (str)으로 얻는 것과 정확히 같습니다 .

import org.apache.commons.lang3.StringUtils;

StringUtils.split(null)       => null
StringUtils.split("")         => []
StringUtils.split("abc def")  => ["abc", "def"]
StringUtils.split("abc  def") => ["abc", "def"]
StringUtils.split(" abc ")    => ["abc"]

또 다른 옵션은 google guava Splitter.split ()Splitter.splitToList () 로, 이에 따라 반복기와 목록을 반환합니다. 아파치 버전과 달리 Splitter는 다음에서 NPE를 발생시킵니다 null.

import com.google.common.base.Splitter;

Splitter SPLITTER = Splitter.on(',').trimResults().omitEmptyStrings();

SPLITTER.split("a,b,   c , , ,, ")     =>  [a, b, c]
SPLITTER.split("")                     =>  []
SPLITTER.split("  ")                   =>  []
SPLITTER.split(null)                   =>  NullPointerException

반복자가 아닌 목록을 원하면 Splitter.splitToList () 를 사용하십시오 .


1
/**
 * <pre>
 * MyUtils.splitString2SingleAlphaArray(null, "") = null
 * MyUtils.splitString2SingleAlphaArray("momdad", "") = [m,o,m,d,a,d]
 * </pre>
 * @param str  the String to parse, may be null
 * @return an array of parsed Strings, {@code null} if null String input
 */
public static String[] splitString2SingleAlphaArray(String s){
    if (s == null )
        return null;
    char[] c = s.toCharArray();
    String[] sArray = new String[c.length];
    for (int i = 0; i < c.length; i++) {
        sArray[i] = String.valueOf(c[i]);
    }
    return sArray;
}

메서드 String.split는 빈 첫 번째를 생성하므로 배열에서 제거해야합니다. 그것은 지루.


1

이 질문의 제목을 기반으로 String을 일부 구분 기호로 나눈 하위 문자열 배열로 변환하기를 원했습니다. 나는 같은 질문을 가진 다른 사람들을 위해 여기에 그 대답을 추가 할 것입니다.

이것은 모든 공간에서 문자열을 분할하여 단어 배열을 만듭니다.

String str = "string to string array conversion in java";
String delimiter = " ";
String strArray[] = str.split(delimiter);

그러면 다음 배열이 생성됩니다.

// [string, to, string, array, conversion, in, java]

출처

Java 8에서 테스트 됨


1

여기에 분할 방법을 사용하여 간단한 문자열을 문자열 배열로 변환합니다.

String [] stringArray="My Name is ABC".split(" ");

산출

stringArray[0]="My";
stringArray[1]="Name";
stringArray[2]="is";
stringArray[3]="ABC";
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.