1

現在、私は単純なAndroidアプリケーションで作業しています。参考のために以下の結果のような文字列を1つ持っています。次に、0.036のようなレート値を取得しようとしましたが、できません。これを取得するにはどうすればよいですか? 出来ますか?私を助けてください

前もって感謝します

String Result =@" NO_Balance | MobileNumber: 43994732984 | rate: 0.036";
4

4 に答える 4

3

String someString =" NO_Balance | MobileNumber: 43994732984 | rate: 0.036";

// last float value
Float f = Float.valueOf(
            someString.substring(
                 someString.lastIndexOf('.'), 
                 someString.length()));

// center int value
int num = Integer.valueOf(
            someString.substring(
                 someString.indexOf(':')+1,
                 someString.lastIndexOf('|')-1));

これは、解析した文字列が有効であると仮定していることに注意してください。

于 2012-08-16T13:38:13.393 に答える
0

レートだけが必要な場合は、次のようにします。

String[] parts = Result.split(" | ");
String[] keyval = parts[2].split(": ");
float rate = parseFloat(keyval[1]);

次のように「MobileNumber」を取得することもできます。

keyval = parts[1].split(": ");
String mobileNumber = keyval[1];

注: どちらの例も、数字を除いて文字列が毎回似ていると仮定しています! 「 | 」で区切られたフィールドの順序または数が変わる可能性がある場合は、より洗練されたソリューションが必要です。

HashMap<String, String> values = new HashMap<String, String>();
String[] parts = CurrentString.split(" | ");

foreach( String part : parts) {
  String[] keyval = parts[2].split(": ");

  if (keyval.length == 2) {
    values.put(keyval[0], keyval[1]);
  } else {
    values.put(keyval[0], "exists");
  }
}

float rate = parseFloat(values.get("rate"));
于 2012-08-16T13:37:32.440 に答える
0

以下は、JavaRegexを使用floatしてString

    public class RegEx {
    public static void main(String[] args) {
        String Result = " NO_Balance | MobileNumber: 43994732984 | rate: 0.036";
        Pattern p = Pattern.compile("\\d+\\.\\d+");
        Matcher m = p.matcher(Result);
        if (m.find()) {
            System.out.println(m.group(0));
        } else
            System.out.println("No float found:(");
    }
}
于 2012-08-16T13:48:28.693 に答える
0

これを行う別の方法は、次のようにすることです。

    String result = " NO_Balance | MobileNumber: 43994732984 | rate: 0.036";

    int index = result.indexOf("rate: ");

    String test = result.substring(index + 6);

    Float theValue = Float.valueOf(test);

    Log.d("testing", test);

    Log.d("testing2", String.valueOf(theValue));
于 2012-08-16T13:48:54.353 に答える