-1

これを行う最善の方法は何ですか?
文字と数字が混在する文字列があるとしましょう。

Srting str = "ha2iwea435";
String str2 = (str Digits);

他の文字の間、または最後にある数字だけの文字列が必要です。したがって、私の他の文字列は str の 4 番目の文字である 2 に等しくなります。これを for ループに入れ、str2 の値を List に追加して、str2 を 435 に割り当てる必要があると思います。
たとえば、

for(int i = 0; str.length() > i; i++){
    str2 = "";
    if(str(char_here(i).isNUMBER()) {
        for(y = i; str(char_here[y]).isNUMBER(); y++) {
          str2 += str.(char_here);
        }
    }
    List1.add(str2);
}

どの方法とテストを使用すればよいかわかりません。
したがって、最終的には ("2", "435") に等しいリストが得られ

ます。

4

4 に答える 4

1

正規表現を使用して、数字以外の文字を削除できます。

String str = "ha2iwea435";
String numbers = str.replaceAll("[^\\d]","");
System.out.println("numbers = " + numbers); //prints 2435

リスト内の数字の各グループが必要な場合は、文字を分割して各グループをリストに追加できます。

String str = "ha2iwea435";
String[] numbers = str.split("[^\\d]");

List<Integer> list = new ArrayList<> ();
for (String number : numbers) {
    if (!number.isEmpty()) list.add(Integer.parseInt(number));
}
System.out.println("numbers = " + list); // numbers = [2, 435]

数値を文字列として保存する場合は、次のようにします。

String str = "ha2iwea435";
String[] numbers = str.split("[^\\d]");

List<String> list = new ArrayList<> (Arrays.asList(numbers));
list.removeAll(Arrays.asList(""));
System.out.println("numbers = " + list); // numbers = [2, 435]
于 2012-12-07T14:03:25.277 に答える
0
    ArrayList<Integer> result = new ArrayList<Integer>();
    String str = "ha2iwea435";

    Pattern p = Pattern.compile("(\\d++)");
    Matcher m = p.matcher(str);
    while (m.find()) {

        String group = m.group();

        result.add(Integer.parseInt( group)); // result [2,435]
    }

結果は2と435のリストです

于 2012-12-07T14:16:02.277 に答える
0

各数値を取得してリストに格納するには、正規表現を使用するのが最も簡単な方法です。

Pattern pattern = Pattern.compile("\\D+");
String str = "ha2iwea435";
String[] nums = pattern.split(str);

List<Integer> values = new ArrayList<Integer>();
for(String s : nums) 
    values.add(Integer.parseInt(s));

//test
for(int i : values)
    System.out.println(i);
于 2012-12-07T14:09:50.953 に答える
0
String str = "ha2iwea435";
String [] str1=str.replaceAll("[\\D]", "").split("(?<!^)");

str1 は数値の配列のみを提供します。

于 2012-12-07T14:12:52.660 に答える