删除行尾的ASCII代码而不删除中间

时间:2015-08-07 10:02:33

标签: java mysql expression ascii talend

我有一个用ASCII代码存储数据的场景。

示例:

"UKI:PPP1ZZ.General to File¦WB"

此外,我有一个场景,在不知不觉中一些特殊字符存储在行尾。

示例:

"UKI:PPP1ZZ.General.File.WELL ".

因为在我的第二个例子中可以看到,我在'WELL'之后获得了ASCII码,它被存储在数据库中,因为我的Talend ETL作业中存在特殊代码。 现在我在java中编写了一个表达式,用于在Talend中清理下面的滞后特殊代码:

row1.sheetname.replaceAll("[^\\x00-\\x7F]","")

但是我用上面的表达式找到的问题是它将替换我不想要的第一个例子中出现的ASCII码。 另外一件事是我只想替换我行末尾的ASCII代码。

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:1)

row1.sheetname = row1.sheetname
    .replaceFirst("(?u)([^\u0000-\u001f\u007f]|\\P{ASCII})$","");

这将删除最后一个字符:ASCII控件字符或非ASCII字符(大写字母P为“非”)。 $ =文字结尾。