String表达式的模式(格式化)

时间:2012-11-30 08:59:36

标签: jasper-reports ireport

我正在使用 iReport 来设计报告。我需要将 xxxxxxxxxxx 等字符串格式化为 xxx xxx xxx xxx 。我可以指定日期,数字,时间和货币的模式。

但是如何为字符串执行此操作?谁能让我对此有所了解。

2 个答案:

答案 0 :(得分:2)

尝试使用带有替换的正则表达式:

假设您的数据名为$F{field}且为java.lang.String,当前值为“0123456789ab”,您希望它为“012 345 678 9ab”。将此作为文本字段值:

$F{field}.replaceAll("^(...)(...)(...)(...)$", "$1 $2 $2 $4")

如果你想要更通用的东西,你可以使用正则表达式和替换。例如,如果你总是想要三胞胎,但你不关心它有多少,你可以这样做:

$F{field}.replaceAll("(...)", "$1 ").trim()

请注意,trim将是必需的,因为最后的三元组将附加额外的空格。

答案 1 :(得分:0)

我通过使用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的Classpath中。现在将其添加为scriptlet,然后您可以使用此方法在报告中格式化为上述所需格式。