Java 如何从字符串中提取浮点数字数据
嘿,伙计们,我正在使用谷歌货币Api请求货币转换信息。 例如,我使用 将1USD转换为我的本地货币。 返回的字符串是{lhs:“1美元”,rhs:“2481.38958乌干达先令”,错误:,icc:true} 我需要java代码来提取2481.38958浮点数据类型并将其保存在浮点变量中。 请帮忙。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乌干达先令”,错误
非常感谢。此字符串为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;(但包含在示例代码中,只需复制所有代码)