首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Java中替换不可打印的Unicode字符?

如何在Java中替换不可打印的Unicode字符?
EN

Stack Overflow用户
提问于 2011-06-01 17:26:48
回答 6查看 147.6K关注 0票数 96

以下字符将替换ASCII控制字符([\x00-\x1F\x7F]的简写):

代码语言:javascript
复制
my_string.replaceAll("\\p{Cntrl}", "?");

以下代码将替换所有不可打印的ASCII码字符([\p{Graph}\x20]的简写),包括重音字符:

代码语言:javascript
复制
my_string.replaceAll("[^\\p{Print}]", "?");

但是,这两种方法都不适用于Unicode字符串。有没有人有从unicode字符串中删除不可打印字符的好方法?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-06-01 17:56:01

代码语言:javascript
复制
my_string.replaceAll("\\p{C}", "?");

请参阅有关Unicode regex的更多信息。java.util.regexPattern/String.replaceAll支持它们。

票数 152
EN

Stack Overflow用户

发布于 2018-04-05 15:42:15

下面是你实现目标的方法

代码语言:javascript
复制
public static String removeNonAscii(String str)
{
    return str.replaceAll("[^\\x00-\\x7F]", "");
}

public static String removeNonPrintable(String str) // All Control Char
{
    return str.replaceAll("[\\p{C}]", "");
}

public static String removeSomeControlChar(String str) // Some Control Char
{
    return str.replaceAll("[\\p{Cntrl}\\p{Cc}\\p{Cf}\\p{Co}\\p{Cn}]", "");
}

public static String removeFullControlChar(String str)
{
    return removeNonPrintable(str).replaceAll("[\\r\\n\\t]", "");
} 
票数 8
EN

Stack Overflow用户

发布于 2018-09-27 19:13:59

为此,我使用了这个简单的函数:

代码语言:javascript
复制
private static Pattern pattern = Pattern.compile("[^ -~]");
private static String cleanTheText(String text) {
    Matcher matcher = pattern.matcher(text);
    if ( matcher.find() ) {
        text = text.replace(matcher.group(0), "");
    }
    return text;
}

希望这是有用的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6198986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档