0

私はJavaで次のようなセットを持っています

[0.99998945, line10Rule:14013, noOfCommits:0]

そして、その要素からすべてのデジタル数字とコロン「:」を削除して取得したい

[line10Rule, noOfCommits]

それを行う最善の方法は何ですか?

4

3 に答える 3

2

修正されました:

String[] array = new String[set.size()];   // create a String array of the same size as the set
set.toArray(array);                        // copy the sets content into the array
set.clear();                               // clear the set

for (String string : array) {              // iterate through the array
    set.add(string.replaceAll("[0-9]*$", ""));   // remove the digits and put the resulting String back into the set    
}

@jlordo: ご指摘ありがとうございます。イテレータが文字列のコピーに対して機能することを忘れていました。これはエレガントではないかもしれませんが(非常に多くのループを繰り返すなど)、機能します:D

よろしくクリストフ

于 2012-12-12T17:01:49.170 に答える
0

まさか、セットアイテムごとに作り直さなくてはならなくなります。数値を "" に置き換えるには、String.replace() を検討してください。

于 2012-12-12T17:02:22.733 に答える
0

これを試して

    List<String> list = new ArrayList<String>(Arrays.asList("0.99998945", "line10Rule:14013", "noOfCommits:0"));
    ListIterator<String> i = list.listIterator();
    while(i.hasNext()) {
        String s = i.next();
        int p = s.indexOf(':');
        if (p > 0) {
            i.set(s.substring(0, p));
        } else {
            i.remove();
        }
    }
    System.out.println(list);

出力

[line10Rule, noOfCommits]
于 2012-12-12T17:07:48.787 に答える