次のような文字列があります。
1 | 2 | 3 | 4 | 5 | 6 | 7 | | | | | | | |
文字列には、より多くの/より少ないデータも含まれる場合があります。|
数字だけを1つずつ削除して取得する必要があります。
次のような文字列があります。
1 | 2 | 3 | 4 | 5 | 6 | 7 | | | | | | | |
文字列には、より多くの/より少ないデータも含まれる場合があります。|
数字だけを1つずつ削除して取得する必要があります。
グアバのスプリッターロックス!
String input = "1 | 2 | 3 | 4 | 5 | 6 | 7 | | | | | | | |";
Iterable<String> entries = Splitter.on("|")
.trimResults()
.omitEmptyStrings()
.split(input);
そして、あなたが本当に派手になりたいなら:
Iterable<Integer> ints = Iterables.transform(entries,
new Function<String, Integer>(){
Integer apply(String input){
return Integer.parseInt(input);
}
});
間違いなく正規表現メソッドまたは String.split を使用できますが、使用した方Splitter
がエラーが発生しにくく、読みやすく保守しやすいと思います。その方が効率的かもしれないと主張することもできString.split
ますが、とにかくすべてのトリミングと空の文字列のチェックを行う必要があるため、おそらく均等になると思います.
についての 1 つのコメントはtransform
、必要に応じて計算を行いますが、これは素晴らしいことですが、同じ要素に対して変換が複数回行われる可能性があることも意味します。したがって、すべての計算を一度に実行するには、このような方法をお勧めします。
Function<String, Integer> toInt = new Function...
Iterable<Integer> values = Iterables.transform(entries, toInt);
List<Integer> valueList = Lists.newArrayList(values);
Scannerを使用して試すことができます:
Scanner sc = new Scanner(myString);
sc.useDelimiter("|");
List<Integer> numbers = new LinkedList<Integer>();
while(sc.hasNext()) {
if(sc.hasNextInt()) {
numbers.add(sc.nextInt());
} else {
sc.next();
}
}
どうぞ:
String str = "1 | 2 | 3 | 4 | 5 | 6 | 7 | | | | | | | |".replaceAll("\\|", "").replaceAll("\\s+", "");
好きということですか?
String s = "1 | 2 | 3 | 4 | 5 | 6 | 7 | | | | | | | |";
for(String n : s.split(" ?\\| ?")) {
int i = Integer.parseInt(n);
System.out.println(i);
}
版画
1
2
3
4
5
6
7
inputString.split("\\s*\\|\\s*")
数値の配列を文字列として提供します。次に、数値を解析する必要があります。
final List<Integer> ns = new ArrayList<>();
for (String n : input.split("\\s*\\|\\s*"))
ns.add(Integer.parseInt(n);
次の正規表現で分割を使用できます (余分なスペース、タブ、および空のバケットを許可します)。
String input = "1 | 2 | 3 | 4 | 5 | 6 | 7 | | | | | | | | ";
String[] numbers = input.split("([\\s*\\|\\s*])+");
System.out.println(Arrays.toString(numbers));
出力:
[1、2、3、4、5、6、7]
または、Java オンボード メソッドを使用する場合:
String[] data="1 | 2 | 3 | 4 | 5 | 6 | 7 | | | | | | | |".split("|");
for(String elem:data){
elem=elem.trim();
if(elem.length()>0){
// do someting
}
}
文字列を区切り記号 | で分割します。次に、配列を解析します。
このようなことをする必要があります:
String test = "|1|2|3";
String delimiter = "|";
String[] testArray = test.split(delimiter);
List<Integer> values = new ArrayList<Integer>();
for (String string : testArray) {
int number = Integer.parseInt(string);
values.add(number);
}