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

问题描述 投票:1回答:1

我有一个用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代码。

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

java mysql expression ascii talend
1个回答
1
投票
row1.sheetname = row1.sheetname
    .replaceFirst("(?u)([^\u0000-\u001f\u007f]|\\P{ASCII})$","");

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

© www.soinside.com 2019 - 2024. All rights reserved.