Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jasper reports 字符串表达式的模式(格式)_Jasper Reports_Ireport - Fatal编程技术网

Jasper reports 字符串表达式的模式(格式)

Jasper reports 字符串表达式的模式(格式),jasper-reports,ireport,Jasper Reports,Ireport,我正在使用iReport设计报表。我需要将一个字符串(如xxxxxxxxxx格式化为xxx-xxx-xxx)。我能够指定日期、数字、时间和货币的模式 但是对于一根弦我该怎么做呢?有人能告诉我这方面的情况吗。尝试使用带替换项的正则表达式: 假设您的数据被称为$F{field},它是java.lang.String,当前值是“0123456789ab”,您希望它是“0123456789ab”。尝试将其作为文本字段值: $F{field}.replaceAll("^(...)(...)(...)(..

我正在使用iReport设计报表。我需要将一个字符串(如
xxxxxxxxxx
格式化为
xxx-xxx-xxx
)。我能够指定日期、数字、时间和货币的模式


但是对于一根弦我该怎么做呢?有人能告诉我这方面的情况吗。

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

假设您的数据被称为
$F{field}
,它是
java.lang.String
,当前值是“0123456789ab”,您希望它是“0123456789ab”。尝试将其作为文本字段值:

$F{field}.replaceAll("^(...)(...)(...)(...)$", "$1 $2 $2 $4")
如果您想要更通用的东西,您可以使用正则表达式和替换来获得更可爱的东西。例如,如果您总是想要三胞胎,但不在乎有多少,您可以:

$F{field}.replaceAll("(...)", "$1 ").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;
}

并在扩展JRDaultScriptlet类的类中编写此方法,将其导出为jar,然后将其添加到iReport的类路径中。现在将其添加为scriptlet,然后您可以使用此方法将其格式化为报告中上述所需的格式。

嗨,Christopher,我使用scriptlet解决了这个问题。谢谢你的回复,我也会试试你的方法。