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

Java 如何从字符串中提取浮点数字数据,java,json,Java,Json,嘿,伙计们,我正在使用谷歌货币Api请求货币转换信息。 例如,我使用 将1USD转换为我的本地货币。 返回的字符串是{lhs:“1美元”,rhs:“2481.38958乌干达先令”,错误:,icc:true} 我需要java代码来提取2481.38958浮点数据类型并将其保存在浮点变量中。 请帮忙。 非常感谢。此字符串为JSON格式。有用于将其作为对象进行操作的LIB。 示例:GSON()或 比如: 新的JSONObject({lhs:“1美元”,rhs:“2481.38958乌干达先令”,错误

嘿,伙计们,我正在使用谷歌货币Api请求货币转换信息。 例如,我使用

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

此字符串为JSON格式。有用于将其作为对象进行操作的LIB。 示例:GSON()或

比如: 新的JSONObject({lhs:“1美元”,rhs:“2481.38958乌干达先令”,错误:,icc:true})。get(“rhs”)

在您必须抑制单元之后,可能使用regexp。
最后。。。parseFloat(“2481.38958”)

此字符串为JSON格式。有用于将其作为对象进行操作的LIB。 示例:GSON()或

比如: 新的JSONObject({lhs:“1美元”,rhs:“2481.38958乌干达先令”,错误:,icc:true})。get(“rhs”)

在您必须抑制单元之后,可能使用regexp。
最后。。。parseFloat(“2481.38958”)

用于输入JSON字符串:

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


对于您的输入JSON字符串:

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


考虑到该值始终介于
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);

考虑到该值始终介于
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);

如果回复总是包含相同的模式(乌干达先令文本),一种可能的方式是:

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());
    }

}

如果回复总是包含相同的模式(乌干达先令文本),一种可能的方式是:

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());
    }

}


看看Float.parseFloat()Thanx Dennis……但我没有看到任何代码示例对我有帮助。如果你能解析出“2481.38958”,那么
Float.parseFloat(“2481.38958”)以浮点形式返回2481.38958。不过,答案似乎更适合你的目的。谢谢你,丹尼斯,也许我把问题的措辞弄错了。请帮助我了解如何从整个字符串中解析出2481.38。谢谢,我想答案已经比我解释得更好了。看看Float.parseFloat()Thanx Dennis……但我没有看到任何代码示例对我有帮助。如果你能解析出“2481.38958”,那么
Float.parseFloat(“2481.38958”)以浮点形式返回2481.38958。不过,答案似乎更适合你的目的。谢谢你,丹尼斯,也许我把问题的措辞弄错了。请帮助我了解如何从整个字符串中解析出2481.38。谢谢,我想答案已经比我解释得更好了。但是我的编译器(Eclipse Indigo)突出显示了JSONSerializer。请确保下载jar文件和所有相关jar,并确保它们位于类路径中。我的编译器正在突出显示JSONSerializer。。。它需要任何导入吗?一旦类位于项目类路径中,Eclipse将能够为您找到这些类。使用CTRL+SHIFT+M。但是我的编译器(Eclipse Indigo)正在突出显示JSONSerializer。请确保下载jar文件和所有依赖jar,并确保它们位于类路径中。我的编译器正在突出显示JSONSerializer。。。它需要任何导入吗?一旦类位于项目类路径中,Eclipse将能够为您找到这些类。使用CTRL+SHIFT+M。我的编译器正在突出显示matcher变量类型。它需要任何库导入吗?是的,
import java.util.regex.Matcher;导入java.util.regex.Pattern非常感谢Elias。你已经拯救了这一天…………你是我的克拉克·肯特……(太快了?)hehe.THanxMy编译器正在突出显示matcher变量类型。它需要任何库导入吗?是的,
import java.util.regex.Matcher;导入java.util.regex.Pattern非常感谢Elias。你拯救了这一天…………你是我的克拉克·肯特……(太快了?)呵呵,谢谢你。但是我的编译器突出显示了StringTokenizer变量类型。它需要任何导入吗?导入java.util.StringTokenizer;(但包含在示例代码中,只需复制所有代码)嘿,谢谢。但是我的编译器突出显示了StringTokenizer变量类型。它需要任何导入吗?导入java.util.StringTokenizer;(但包含在示例代码中,只需复制所有代码)