229

このような長さの不明な文字列があります

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

各単語が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.
4

16 に答える 16

381

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

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

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

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

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

ただし、通常は、実際の具体的な実装ではなく、インターフェイスにプログラムする方が適切なので、最初のオプションをお勧めします。

于 2012-05-17T07:45:12.960 に答える
168

さて、あなたは分割したいですよね?

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

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

アイテムの周りの空白をさらに削除したい場合:

String[] animalsArray = animals.split("\\s*,\\s*");
于 2012-05-17T07:45:25.110 に答える
34

それを分割して配列を作成し、配列のようにアクセスできます。

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

あなたはそのインデックスでそれにアクセスすることができます

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

またはループを使用する

for(String name : namesList){
    System.out.println(name);
}
于 2016-01-31T08:37:13.177 に答える
19

小さな改善:上記のソリューションでは、実際の文字列の先頭または末尾のスペースは削除されません。splitを呼び出す前にtrimを呼び出すことをお勧めします。これの代わりに、

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

使用する

 String[] animalsArray = animals.trim().split("\\s*,\\s*");
于 2013-12-11T12:17:53.583 に答える
3

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

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*");
于 2015-04-30T09:21:55.870 に答える
3

完全を期すために、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を返すので、リストが必要な場合はLists.newArrayList()、上記のようにラップします。それ以外の場合は、Iterableを使用します。例:

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

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

プロジェクトですでにGuavaを使用している場合は、これが推奨されるソリューションになるはずです。その他の構成オプションについては、 GuavaユーザーガイドのSplitterドキュメントまたはjavadocsを参照してください。

于 2015-09-02T20:40:28.883 に答える
2

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

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

またはその他

if (sg.endsWith(",")) {
                    sg = sg.substring(0, sg.length() - 1);
                }
于 2017-03-14T13:43:22.227 に答える
2

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);
    }

楽しい :)

于 2019-01-21T11:43:38.643 に答える
1

簡単で短い解決策:-

String str = "test 1、test 2、test 3";

List<String> elementList = Arrays.asList(str.replaceAll("\\s*,\\s*", ",").split(","));

Output = ["test 1"、 "test 2"、 "test 3"]

それはすべての場合に機能します。

後でありがとう:-)

于 2022-01-07T15:18:14.503 に答える
0

すべての空白を削除し、固定サイズまたは不変のリストを作成します(asList APIドキュメントを参照)

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+", "")が、最大の効率はユースケースによって異なります。( Javaの文字列から空白を削除する@GurselKocaの回答を参照してください)

于 2016-09-09T19:56:38.730 に答える
0

次のようなものを使用できます。

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

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

また、ライブラリを含めます。

import java.util.ArrayList;
import java.util.Arrays; 
import java.util.List;
于 2017-02-20T21:36:54.603 に答える
0

これを使って :

        List<String> splitString = (List<String>) Arrays.asList(jobtype.split(","));
于 2018-08-30T11:53:33.067 に答える
0

Kotlinでは、

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

ここで、stringArrayisList<String>commasStringisStringはコンマとスペースを使用します

于 2018-09-25T05:49:33.690 に答える
0

これは、文字列をカンマで分割する簡単な方法です。

import java.util.*;

public class SeparatedByComma{
public static void main(String []args){
     String listOfStates = "Hasalak, Mahiyanganaya, Dambarawa, Colombo";
     List<String> stateList = Arrays.asList(listOfStates.split("\\,"));
     System.out.println(stateList);
 }
}
于 2020-06-12T07:59:00.227 に答える
0

「オールドスクール」(JDK1.0)java.utilクラスStringTokenizer

StringTokenizerString str、String delim)

import java.util.*;

public class Tokenizer {
        public static void main(String[] args) {
                String str = "dog, cat, bear, elephant, ..., giraffe";
                StringTokenizer tokenizer = new StringTokenizer(str, ",");

                List<String> strings = new ArrayList<String>();

                while (tokenizer.hasMoreTokens()) {
                        // if need to trim spaces .trim() or use delim like ", "
                        String token = tokenizer.nextToken().trim();
                        strings.add(token);
                }
                // test output
                strings.forEach(System.out::println);
        }
}

注意: StringTokenizerは、互換性の理由で保持されているレガシークラスですが、新しいコードでは使用しないでください。この機能を求める人は、代わりにStringのsplitメソッドまたはjava.util.regexパッケージを使用することをお勧めします。

例:

import java.util.regex.*;
...
// Recommended method<?>
Pattern commaPattern = Pattern.compile("\\s*,\\s*");
String[] words = commaPattern.split(str);
List<String> wordList = new ArrayList<String>(Arrays.asList(words));

// test output
wordList.forEach(System.out::println);
...
于 2021-09-17T21:39:21.743 に答える
-1

replaceAll()空白を必要なものに置き換えることですべての空白を削除できるという関数があります。例として

String str="  15. 9 4;16.0 1"
String firstAndSecond[]=str.replaceAll("\\s","").split(";");
System.out.println("First:"+firstAndSecond[0]+", Second:"+firstAndSecond[1]);

あなたに与えるでしょう:

First:15.94, Second:16.01
于 2015-05-16T00:01:16.457 に答える