このように見える未知の長さの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.
あなたはこれをすることができます:
String str = "...";
List<String> elephantList = Arrays.asList(str.split(","));
基本的に .split()
メソッドは渡している(この場合)区切り文字に従って文字列を分割し、文字列の配列を返します。
ただし、配列ではなく文字列のリストの後ろにいるように見えるため、 Arrays.asList()
ユーティリティを使用して配列をリストに変換する必要があります。 FYIと同じように、次のようにすることもできます。
String str = "...";
ArrayList<String> elephantList = (ArrayList<String>)Arrays.asList(str.split(","));
しかし、実際の具体的な実装ではなく、インターフェイスにプログラムする方が通常は良い方法です。そこで、私は最初の選択肢をお勧めします。
ええと、あなたは split をしたいのですね。
String animals = "dog, cat, bear, elephant, giraffe";
String[] animalsArray = animals.split(",");
あなたがさらにアイテムの周りの空白を取り除きたいならば:
String[] animalsArray = animals.split("\\s*,\\s*");
あなたはそれを分割して配列を作ることができますそして配列のようにアクセスします
String names = "prappo,prince";
String[] namesList = names.split(",");
あなたはのようにアクセスすることができます
String name1 = namesList [0];
String name2 = namesList [1];
またはループを使う
for(String name : namesList){
System.out.println(name);
}
お役に立てば幸いです。
ちょっとした改善:上記の解決策は実際の文字列の先頭や末尾のスペースを削除しません。 splitを呼び出す前にtrimを呼び出す方が良いでしょう。これの代わりに、
String[] animalsArray = animals.split("\\s*,\\s*");
つかいます
String[] animalsArray = animals.trim().split("\\s*,\\s*");
まず、このように名前を分割することができます
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*");
完全を期すために、 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のマニュアルを参照してください。
私のために働いたこれで試すことができます
sg = sg.replaceAll(", $", "");
それ以外の場合
if (sg.endsWith(",")) {
sg = sg.substring(0, sg.length() - 1);
}
すべての空白を削除して固定サイズまたは不変リストを作成します(asList
API 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の文字列から空白を削除する を参照)
コトリンでは、
val stringArray = commasString.replace(", ", ",").split(",")
ここでstringArray
はList<String>
、commasString
はコンマとスペースを含むString
です。
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);
}
楽しい :)
これを使って :
List<String> splitString = (List<String>) Arrays.asList(jobtype.split(","));
あなたはこのようなものを使うことができます:
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;