Java 用一条语句自动格式化字符串中的数字?
假设我有一个包含一些字符和数字的文本,就像这样:Java 用一条语句自动格式化字符串中的数字?,java,Java,假设我有一个包含一些字符和数字的文本,就像这样: Lorem ipsum 10.2357 dolor sit amet,10.0000 Concetetur Adipsicing 50.9651 elit. 如何获得这样的最终字符串: Lorem ipsum 10.23 dolor sit amet,10.00 Concertetur Adipsicing 50.96 elit. 使用单个语句,而不创建其他方法 ->更新 我希望在单个语句中执行此操作,因为我希望在jasper reports中执
Lorem ipsum 10.2357 dolor sit amet,10.0000 Concetetur Adipsicing 50.9651 elit.
如何获得这样的最终字符串:
Lorem ipsum 10.23 dolor sit amet,10.00 Concertetur Adipsicing 50.96 elit.
使用单个语句,而不创建其他方法
->更新
我希望在单个语句中执行此操作,因为我希望在jasper reports中执行此操作,jasper reports不支持多个语句。我可以为此创建一个方法,但这对于一件简单的事情来说是太多的工作了我不是Java专家,但很可能您正在寻找
printf
eqivalent,在Java中是:
System.out.format(“PI是%.2f”,3.14)
查找
%f
的格式选项我不是Java专家,但您可能正在寻找printf
eqivalent,它在Java中是:
System.out.format(“PI是%.2f”,3.14)
查找
%f
的格式选项它不能在一行中实现
String s = "Lorem ipsum 10.2357 dolor sit amet, 10.0000 consectetur adipiscing 50.9651 elit";
DecimalFormat df = new DecimalFormat("#.##");
String[] sub = s.split(" ");
StringBuilder sb = new StringBuilder();
for (int i=0; i<sub.length; i++) {
try {
double d = Double.parseDouble(sub[i]);
sb.append(df.format(d));
sb.append(" ");
} catch (Exception e) {
sb.append(sub[i]);
sb.append(" ");
}
}
System.out.println(sb.toString());
String s=“Lorem ipsum 10.2357 dolor sit amet,10.0000 Concertetur Adipising 50.9651 elit”;
DecimalFormat df=新的DecimalFormat(“#.###”);
字符串[]sub=s.split(“”);
StringBuilder sb=新的StringBuilder();
对于(int i=0;i而言,它不可能在一行中实现
String s = "Lorem ipsum 10.2357 dolor sit amet, 10.0000 consectetur adipiscing 50.9651 elit";
DecimalFormat df = new DecimalFormat("#.##");
String[] sub = s.split(" ");
StringBuilder sb = new StringBuilder();
for (int i=0; i<sub.length; i++) {
try {
double d = Double.parseDouble(sub[i]);
sb.append(df.format(d));
sb.append(" ");
} catch (Exception e) {
sb.append(sub[i]);
sb.append(" ");
}
}
System.out.println(sb.toString());
String s=“Lorem ipsum 10.2357 dolor sit amet,10.0000 Concertetur Adipising 50.9651 elit”;
DecimalFormat df=新的DecimalFormat(“#.###”);
字符串[]sub=s.split(“”);
StringBuilder sb=新的StringBuilder();
对于(inti=0;i您可以使用正则表达式()来实现
例如:
str.replaceAll("(\\d+)\\.?(\\d{0,2})\\d+", "$1.$2")
这在所有情况下都不起作用。您可以使用正则表达式()
例如:
str.replaceAll("(\\d+)\\.?(\\d{0,2})\\d+", "$1.$2")
这不会在所有情况下都起作用。您有任何格式规则吗?或者简单地截断之后的部分。dd
可以像1.5678
到1.56
?您能解释一下限制在哪里吗“只需一条语句,而不需要创建其他方法”来自?听起来像是某种分配。@ci_u.看看我对问题的更新就做个方法吧,对于一个方法来说没有什么太简单的。你有什么格式规则吗?或者干脆把后面的部分截断。dd
就可以了,就像1.5678
到1.56
?你能解释一下限制在哪里吗使用单个语句,而不创建其他方法"来自?听起来像是某种赋值。@ci_u看我对这个问题的更新就做一个方法吧,对于一个方法来说没有什么太简单的东西。这不符合问题中的要求,问题中有一个以数字为输入的字符串。这不符合问题中的要求,问题中有一个以数字为输入的字符串。这是正确的字符串上的数字总是有两个以上的数字,它总是有效的。谢谢。@mateusvicari替换1.999
的结果应该是什么?它应该被四舍五入到2.00
还是1.99
可以吗?@Pshemo如果是2.00,它会更好,但精度在我的情况下并不那么重要。是的!正如我的数字一样字符串将始终有两个以上的数字,它将始终有效。谢谢。@mateusvicari替换1.999
的结果应该是什么?应该将其四舍五入到2.00
还是1.99
可以吗?@Pshemo如果它是2.00,它会更好,但精度在我的情况下并不重要。