目前我正在使用简单的 android 应用程序,我有一个类似于下面提到的 Result 的字符串供您参考,然后我试图获得像 0.036 这样的速率值,但我做不到,如何获得这个?是否可以?请帮我
提前致谢
String Result =@" NO_Balance | MobileNumber: 43994732984 | rate: 0.036";
字符串 someString =" NO_Balance | 手机号码:43994732984 | 费率: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));
请注意,这假定您解析的字符串是有效的,您可能需要进行一些检查
如果您只想要费率,请这样做:
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"));
以下使用 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:(");
}
}
另一种方法是执行以下操作:
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));