如何从字符串中提取浮点数字数据

时间:2012-07-26 17:22:12

标签: java json

Hey Guys我使用Google Currency Api来请求货币转换信息。 例如,我使用 Google Currency Api

将1USD转换为我的本地货币。 返回的字符串是{lhs:“1美元”,rhs:“2 481.38958 Ugandan shillings”,错误:“”,icc:true} 我需要java代码来提取2481.38958浮点数据类型并将其保存在float变量中。 请帮忙。 非常感谢。

4 个答案:

答案 0 :(得分:3)

输入JSON字符串:

{lhs: "1 U.S. dollar",rhs: "2481.38958 Ugandan shillings",error: "",icc: true}

使用http://json-lib.sourceforge.net/

    JSONObject json = (JSONObject) JSONSerializer.toJSON( jsonTxt );        
    String dollarString = json.getFloat( "rhs" );
    float dollars = Float.parseFloat(dollarString.split(" ")[0]);

答案 1 :(得分:0)

此字符串为JSON格式。有一些库可以将其作为对象进行操作。 示例:GSON(http://code.google.com/p/google-gson/)或http://www.json.org/java/

像:     新的JSONObject(“{lhs:”1美元“,rhs:”2 481.38958 Ugandan shillings“,错误:”“,icc:true}”)。get(“rhs”)

在你必须压制单位之后,可能还有正则表达式。 最后...... Float.parseFloat(“2 481.38958”)

答案 2 :(得分:0)

考虑到值始终在rhs:和单词之间。

String str = "{lhs: \"1 U.S. dollar\",rhs: \"2 481.38958 Ugandan shillings\",error: \"\",icc: true}";
Matcher m = Pattern.compile("rhs:\\s.*?([\\d\\s\\.]+)\\s\\w+").matcher(str);
m.find();
float value = Float.parseFloat(m.group(1).replaceAll("[^\\d\\.]", ""));
System.out.println(value);

答案 3 :(得分:0)

如果响应总是包含相同的模式(乌干达先令文本),一种可能的方法是这样的:

package so;

import java.util.StringTokenizer;

public class DemoString {

    public static void main(String[] args) {
        String s = new String("{lhs: \"1 U.S. dollar\",rhs: \"2 481.38958 Ugandan shillings\",error: \"\",icc: true}") ;
        StringTokenizer st = new StringTokenizer(s, "\"");
        st.nextToken();  //{lhs: 
        st.nextToken();  //1 U.S. dollar
        st.nextToken();  //,rhs: 
        String value = st.nextToken();  //2 481.38958 Ugandan shillings
        String num = value.substring(0, value.indexOf("U"));  // 2 481.38958 
        num = num.replaceAll(" ", "");
        Float fnum = 0f;
        try {
            fnum = Float.parseFloat(num);           
        } catch (Exception e) {
            e.printStackTrace(System.out);
        }
        System.out.println("The float number is: " + fnum.toString());
    }

}