如何使用正则表达式删除Java中的SUB(HEX:1A)控制字符?

时间:2013-08-30 18:28:05

标签: java regex

我有一个包含错误数据的文件(一些随机的SUB控制字符本身......它们不是字形的一部分)我试图使用正则表达式搜索模式删除它们:

Text to Find: \x1a
Replace with: 

这会删除我的SUB字符,但它也会弄乱我的其他具有重音符号的字符(具体为é和í)。

是否存在一个正则表达式,如果它本身就会删除SUB控制字符(代码点)? (例如,不是字形的一部分)

示例数据(用SUB控制字符替换你看到“␚”的所有地方:

A,André,Fernandez
A,Daniel,O␚Shea
A,Ibhlín,Flanders
A,Donny,O␚'Donnell
A,Spencer,O'Maley

SAMPLE DATA如果我使用当前的正则表达式输出:

A,Andr�,Fernandez
A,Daniel,OShea
A,Ibhl�n,Flanders
A,Donny,O'Donnell
A,Spencer,O'Maley

期望的数据输出

A,André,Fernandez
A,Daniel,OShea
A,Ibhlín,Flanders
A,Donny,O'Donnell
A,Spencer,O'Maley

2 个答案:

答案 0 :(得分:1)

 Position        Decimal        Name                     Appearance   
 0x241A          9242           SYMBOL FOR SUBSTITUTE    ␚

unicode chart

也许这可以帮到你。

随之而来。

Regex Unicode

答案 1 :(得分:0)

Jim Garrison的评论是答案:正则表达式正在删除sub,但编码正在改变过程。

此外,我正在使用产品电话Boomi而我正在使用内置的"搜索/替换" Boomi的特色。它是在运行Java,因此我没有回答关于Java代码的问题,因为我不知道正在运行的确切代码。

我们解决这个问题的方法是,我们将考虑编写一些自定义Java代码来进行字符替换,而不是使用Boomi的内置搜索/替换功能。

感谢您的帮助并指出我正确的方向!

更新:我刚刚在Boomi中找到了一个内置功能:字符解码。事实证明,我可以在不编写自定义Java代码的情况下管理编码。