我正在使用iReport来设计报告。我需要格式化一个字符串,例如xxxxxxxxxxx
to xxx xxx xxx xxx
。我可以为日期、数字、时间和货币指定模式。
但是如何为字符串执行此操作?谁能提供我对此的见解。
我正在使用iReport来设计报告。我需要格式化一个字符串,例如xxxxxxxxxxx
to xxx xxx xxx xxx
。我可以为日期、数字、时间和货币指定模式。
但是如何为字符串执行此操作?谁能提供我对此的见解。
尝试使用带有替换的正则表达式:
假设您的数据被调用$F{field}
并且它是 a java.lang.String
,并且当前值为“0123456789ab”并且您希望它是“012 345 678 9ab”。试试这个作为你的文本字段值:
$F{field}.replaceAll("^(...)(...)(...)(...)$", "$1 $2 $2 $4")
如果你想要更通用的东西,你可以用你的正则表达式和替换变得更可爱。例如,如果你总是想要三胞胎但你不在乎有多少,你可以这样做:
$F{field}.replaceAll("(...)", "$1 ").trim()
请注意,这trim
将是必需的,因为最后的三元组将附加额外的空间。
我通过使用 scriptlet 解决了这个问题。感谢您的回复,也会尝试您的方法。
public String formatNum(String tabn) {
String num = tnum;
String temp, t1, t2, t3, t4;
temp = org.apache.commons.lang.StringUtils.leftPad(num, 11, '0');
t1 = temp.substring(0, 2);
t2 = temp.substring(2, 5);
t3 = temp.substring(5, 8);
t4 = temp.substring(8, 11);
num = t1 + " " + t2 + " " + t3 + " " + t4;
return num;
}
并在扩展 JRDefaultScriptlet 类的类中编写此方法并将其导出为 jar,然后将其添加到 iReport 的类路径中。现在将其添加为 scriptlet,然后您可以使用此方法在报告中将其格式化为上述所需格式。