Javaでの文字列から文字列への配列変換


115

私が持っているstring = "name"; 私は、文字列配列に変換します。どうすればいいのですか?Java組み込み関数はありますか?手動で実行できますが、Java組み込み関数を検索しています。

文字列の各文字が文字列になる配列が必要です。char 'n'のように、配列に格納された文字列「n」になります。


10
どういう意味String[] ary = new String[] { "name" };ですか?たとえば文字で分割?
rsp

文字列配列ですか?そのための関数をどのように作成できますか。それは次のようになります。String [] array = {"Name"}; または、文字配列を意味しますか?
ウッディ

1
文字列の各文字が文字列になる配列が必要です。char 'n'のように、配列に格納された文字列 "n"になります
riyana

回答:


199

割り当てを開始するString.splitには、正規表現で文字列を分割し、この式は空の文字列である可能性があります。

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

配列を生成します:

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

空の最初のエントリを取り除くことは、読者の練習問題として残します:-)

注: Java 8では、空の最初の要素は含まれなくなりました。


21
注:jdk8を使用すると、空の最初のエントリは結果の配列に含まれなくなります。stackoverflow.com/questions/22718744/…を
AlexisC。

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

2行目は、長さが1のString配列を割り当てます。次のように、自分で長さを指定する必要はありません。

String[] strArray = new String[1];

代わりに、長さは初期化子の要素の数によって決まります。使用する

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

長さ3の配列を作成します。


22
質問には本当に答えません。
アタマンロマン2010

1
質問の変更履歴を確認すると、質問が編集される前に別の質問をしていることがわかります。この回答は最初のバージョンに返信します。
f1sh 2013

14

本当に単一文字の文字列の配列が必要であると仮定します(char[]または以外Character[]

1.正規表現を使用する:

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

ゼロ幅の負の先読みは、入力の最初のパターンマッチングを防止するため、先行する空の文字列を取得しません。

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 2014年

13

それはより単純にならないので、私はそれが単に必要であるとは思いません

String[] array = {"name"};

もちろん、あなたが主張するなら、あなたは書くことができます:

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

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

[編集] 1文字の文字列が必要な場合は、以下を使用できます。

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

残念ながらs [0]は空になりますが、その後にn、a、m、eの文字が続きます。これが問題である場合、例えばSystem.arrayCopyを使用して、最初の配列エントリを取り除くことができます。


文字列の各文字が文字列になる配列が必要です。char 'n'のように、配列に格納された文字列 "n"になります
riyana

@Landeiこの文字列date = "2013/01/05"があります。.split( "/")を使用すると、空の文字列が[0]として返されず、正常に動作します。私の正規表現スプリッターとあなたのスプリッターとの間に何か違いはありますか?
Behzad 2013年

@Behzad AFAIKあなたはいくつかの区切り文字を持っているのではなく、空のパターンに対してのみ空のエントリを持つ面白い動作をしています。
ランデイ2013年

@ランディ私はあなたの意地悪をしたことを知らせてください。分割関数で ""を使用するだけで、最初の配列値として0が返されるということですか はい?
Behzad 2013年

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)、1文字の文字列に不必要にアクセスする代わりに文字が必要な場合に最適です。;)
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

追加の方法:

すでに述べたように、元の文字列「名前」を非常に簡単にchar配列に変換できます。

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()で、イテレータとリストを対応して返します。Apacheバージョンとは異なり、スプリッターは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番目を生成します。これを配列から削除する必要があります。それは退屈だ。


1

この質問のタイトルに基づいて、文字列を区切り文字で区切られた部分文字列の配列に変換するためにここに来ました。同じ質問があるかもしれない他の人のためにここにその答えを追加します。

これは、すべてのスペースで文字列を分割することにより、単語の配列を作成します。

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

ここでは、splitメソッドを使用して、単純な文字列を文字列配列に変換しています。

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.