2016-05-20 7 views
0

を作成し、私は以下のようにJava list of StringsありますフィルタのJavaリストと整数定数配列

はmyList:上記

C26366 
C10025, C10026 
C10244 
C26595 
C26594 
C9026, C9027, C9029, C9080 //this is one list element (needs seperation) 
C26597 
C10223, C10287, C10277, C10215 
C10242 
C10243 
C9025, C9030, C9034, C9051, C9052, C9055 // similarly here 
C10241 
C10067 
C27557 
C10066 
.... //these are all ids 

for-loopスニペット以下の出力である:

for (String id: myList) { 
     System.out.println(id); 
} 

このmyListをJava整数配列に変換するにはどうすればよいですか?私は、私のように使用して、その配列を使用したい/のようなものを期待しています:myListからコンテンツを保持しなければならない

public static final IDS = { 31598,9089,9092,9093,9108,9109,....} 

IDS arrayと、彼らはそれらのいずれかのC'sや他の文字なしですが、ただの数字。

+1

ルック.substring() 'メソッド。行のIDを区切るために '、'で分割し、空白をトリミングし、C文字を削除するための部分文字列で問題を解決します。 String JavaDocが利用可能です[こちら](https://docs.oracle.com/javase/7/docs/api/java/lang/String.html)。 – Ironcache

答えて

1

私はこれを行うことをお勧めします:

  1. は、文字列のリストにそれだけのものを見つけるために「\ dは+」このパターンで正規表現を使用して、最終的な値
  2. ための整数のリストを定義します。見つかった場合は数値
  3. であり、整数に解析してリストに追加します。

例:このコードははmyListにあなたが持っているinstegerを保持しているリストを表示します

List<Integer> myListIntegers = new ArrayList<Integer>(); 
for (String subStrings : myList) { 
    Pattern p = Pattern.compile("\\d+"); 
    Matcher m = p.matcher(subStrings); 
    while (m.find()) { 
     myListIntegers.add(Integer.parseInt(m.group())); 
    } 
} 
System.out.println(myListIntegers); 

[26366、10025、10026、10244、26595、 26594,9026,9027,9029,9080, 10241,10067,27557,10066

+0

Worked - 必要なリストを取得しました。私はここからそれを取ることができます。 –

2

のJava 8で使用できるストリーム:

List<String> myList = Arrays.asList(
     "C26366", "C10025, C10026", "C10244", "C26595", "C26594", 
     "C9026, C9027, C9029, C9080", "C26597", "C10223, C10287, C10277, C10215", 
     "C10242", "C10243", 
     "C9025, C9030, C9034, C9051, C9052, C9055", "C10241", "C10067"); 

List<Integer> myListOfIntegers = myList.stream() 
     .map(x -> x.split(",")) 
     .flatMap(l -> Arrays.asList(l).stream()) 
     .map(y -> y.replaceAll("\\D", "")) 
     .map(z->Integer.parseInt(z)) 
     .collect(Collectors.toList()); 

for(Integer i : myListOfIntegers){ 
    System.out.println(i); 
} 

結果は次のとおりです。のstring.Split() `、` String.trim() `と` `文字列に

26366 
10025 
10026 
10244 
26595 
26594 
9026 
9027 
9029 
9080 
26597 
10223 
10287 
10277 
10215 
10242 
10243 
9025 
9030 
9034 
9051 
9052 
9055 
10241 
10067 
+0

ウィッシュ私はまだJava 7でJava 8を使用することができました。このストリーム()を覚えておきます。 –