web-dev-qa-db-ja.com

コンマ区切りの文字列を分割する方法

このように見える未知の長さのStringがあります

"dog, cat, bear, elephant, ..., giraffe"

各WordがArrayListの要素になることができるようにコンマでこの文字列を分割するための最適な方法は何でしょうか。

例えば

List<String> strings = new ArrayList<Strings>();
// Add the data here so strings.get(0) would be equal to "dog",
// strings.get(1) would be equal to "cat" and so forth.
180
James Fazio

あなたはこれをすることができます:

String str = "...";
List<String> elephantList = Arrays.asList(str.split(","));

基本的に .split() メソッドは渡している(この場合)区切り文字に従って文字列を分割し、文字列の配列を返します。

ただし、配列ではなく文字列のリストの後ろにいるように見えるため、 Arrays.asList() ユーティリティを使用して配列をリストに変換する必要があります。 FYIと同じように、次のようにすることもできます。

String str = "...";
ArrayList<String> elephantList = (ArrayList<String>)Arrays.asList(str.split(","));

しかし、実際の具体的な実装ではなく、インターフェイスにプログラムする方が通常は良い方法です。そこで、私は最初の選択肢をお勧めします。

308
npinti

ええと、あなたは split をしたいのですね。

String animals = "dog, cat, bear, elephant, giraffe";

String[] animalsArray = animals.split(",");

あなたがさらにアイテムの周りの空白を取り除きたいならば:

String[] animalsArray = animals.split("\\s*,\\s*");
143

あなたはそれを分割して配列を作ることができますそして配列のようにアクセスします

String names = "prappo,prince";
String[] namesList = names.split(",");

あなたはのようにアクセスすることができます

String name1 = namesList [0];
String name2 = namesList [1];

またはループを使う

for(String name : namesList){
System.out.println(name);
}

お役に立てば幸いです。

21

ちょっとした改善:上記の解決策は実際の文字列の先頭や末尾のスペースを削除しません。 splitを呼び出す前にtrimを呼び出す方が良いでしょう。これの代わりに、

 String[] animalsArray = animals.split("\\s*,\\s*");

つかいます

 String[] animalsArray = animals.trim().split("\\s*,\\s*");
17
user872858

まず、このように名前を分割することができます

String animals = "dog, cat, bear, elephant,giraffe";

String animals_list[] = animals.split(",");

あなたの動物にアクセスする

String animal1 = animals_list[0];
String animal2 = animals_list[1];
String animal3 = animals_list[2];
String animal4 = animals_list[3];

また、動物名の前後の空白やカンマを削除したい

String animals_list[] = animals.split("\\s*,\\s*");
3
sam

完全を期すために、 Guava ライブラリを使用して、次のようにします。Splitter.on(",").split(“dog,cat,fox”)

もう一つの例:

String animals = "dog,cat, bear,elephant , giraffe ,  zebra  ,walrus";
List<String> l = Lists.newArrayList(Splitter.on(",").trimResults().split(animals));
// -> [dog, cat, bear, elephant, giraffe, zebra, walrus]

Splitter.split()はIterableを返すので、Listが必要な場合は上記のようにLists.newArrayList()でラップしてください。それ以外の場合は、単にIterableを使用してください。次に例を示します。

for (String animal : Splitter.on(",").trimResults().split(animals)) {
    // ...
}

trimResults()と同様に、String.split()コーナーケースのための正規表現の微調整 _を必要とせずに、すべてのトリミングニーズをどのように処理するかに注意してください。

プロジェクトですでにGuavaを使用している場合は、これが推奨されるソリューションです。設定オプションの詳細については、 Guavaユーザーガイド または javadocs のSplitterのマニュアルを参照してください。

3
Jonik

私のために働いたこれで試すことができます

 sg = sg.replaceAll(", $", "");

それ以外の場合

if (sg.endsWith(",")) {
                    sg = sg.substring(0, sg.length() - 1);
                }
2
Tarit Ray

すべての空白を削除して固定サイズまたは不変リストを作成します(asListAPI docs を参照)

final String str = "dog, cat, bear, elephant, ..., giraffe";
List<String> list = Arrays.asList(str.replaceAll("\\s", "").split(","));
// result: [dog, cat, bear, elephant, ..., giraffe]

replaceAll(\\s+", "")を使うことも可能ですが、最大効率はユースケースによって異なります。 (@GurselKoca answer to Javaの文字列から空白を削除する を参照)

0
sdc

コトリンでは、

val stringArray = commasString.replace(", ", ",").split(",")

ここでstringArrayList<String>commasStringはコンマとスペースを含むStringです。

0

build.gradleにGuavaを追加します。

    compile group: 'com.google.guava', name: 'guava', version: '27.0-jre'

その後

    public static List<String> splitByComma(String str) {
    Iterable<String> split = Splitter.on(",")
            .omitEmptyStrings()
            .trimResults()
            .split(str);
    return Lists.newArrayList(split);
    }

    public static String joinWithComma(Set<String> words) {
        return Joiner.on(", ").skipNulls().join(words);
    }

楽しい :)

0

これを使って :

        List<String> splitString = (List<String>) Arrays.asList(jobtype.split(","));
0

あなたはこのようなものを使うことができます:

String animals = "dog, cat, bear, elephant, giraffe";

List<String> animalList = Arrays.asList(animals.split(","));

また、あなたはlibsを含めるでしょう:

import Java.util.ArrayList;
import Java.util.Arrays; 
import Java.util.List;
0
Diego Cortes