如何在Android中的String中获取浮点值?

时间:2012-08-16 13:32:49

标签: android string range

目前我在简单的Android应用程序中工作,我有一个字符串,如我提到的结果,供你参考,然后我试图得到像0.036的速率值,但我不能,如何得到这个?可能吗?请帮帮我

先谢谢

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

4 个答案:

答案 0 :(得分: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));

请注意,这假定您的解析有效的字符串,您可能想要进行一些检查

答案 1 :(得分: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"));

答案 2 :(得分:0)

以下使用Java Regex来确定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:(");
    }
}

答案 3 :(得分: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));