2016-05-16 10 views
0

非常に単純な質問 - 私はPR:MTH 1 MTR 7のような文字列を持っています。その文字列の数値を整数変数に抽出したいと思います。文字列から未知のインデックスから2つの整数を抽出する方法

問題は、これらの整数の桁数がわからないことです。たとえば、PR:MTH 100000 MTR 777も有効な文字列です。だから、数字がどこにあるのか正確なインデックスを指定することはできません。

私たちが言うことができるのは、最初の数字のMSBがインデックス7(私が数えた)にあることだけです。

これにはjavaでStringメソッドまたはStringBuilderメソッドがありますか?または私は自分のものを書く必要がありますか?

+0

'String.split(" [:] ")[indexOfInteger]' –

+0

サブ文字列の正規表現 – Dhruv

答えて

1

あなたは、分割をしてみてください(」「)、その後、uは必要な値を取り、

+0

ありがとうございました!非常に役立ちます。 –

3

String#splitは、このような状況で、あなたの友人が

スペースとコロンで文字列を分割し、対応するインデックスの解析である整数に変換する必要があります。

String s = "PR:MTH 100000 MTR 777"; 
String[] split = s.split("[ :]"); 
int one = Integer.parseInt(split[2]); 
int two = Integer.parseInt(split[4]); 
+1

ありがとう!非常に役立ちます。 –

1

あなたは、try-catchブロックを使用して、yourString.split(" ");を行うと、すべての数字を探してその配列を反復処理することができます。それらを保存するにはArrayList<Integer>を使用できます。

私のようなものだろう:数字を得るために

String myString = "dsfsd 12 12 dd"; 
    ArrayList<Integer> numbers = new ArrayList<>(); 

    String[] splitString = myString.split(" "); 

    for (String split : splitString) { 
     try { 
      numbers.add(Integer.valueOf(split)); 
     } catch (java.lang.NumberFormatException e) { 
      //not a number 
     } 
    } 

    System.out.printf("I have %d numbers in my String! \n", numbers.size()); 

を、あなただけのArrayListを反復処理する必要があります。

for (Integer number : numbers) { 
     //your code 
     System.out.println(number); 
    } 

希望すると、これが役立ちます。一般的なケースを解決するために

0

、番号を​​見つけるために正規表現を使用します。

String number1 = str.replaceAll("\\D*(\\d+).*", "$1"); 
String number2 = str.replaceAll("\\D*\\d+\\D+(\\d+).*", "$1"); 

これは、入力文字列が

た場合、たとえば、明確な区切り文字を持たない入力での作業の利点を持っています
foo123bar456baz 

上記のコードは、123456を正常に抽出します。

関連する問題