【问题标题】:how to trim the Unicode \u0085 character in a String in Java [duplicate]如何在Java中修剪字符串中的Unicode \u0085字符[重复]
【发布时间】:2013-05-01 05:15:35
【问题描述】:

我无法在 Java 中修剪 unicode 控制字符 \u0085。你怎么能这样做?

String str = "\u0000\u001f\u0085 hi \n"
PrintStream out = new PrintStream(System.out, true, "UTF-8");
out.println(teststr);
String st = teststr.replaceAll("\\p{Cntrl}", "");
out.println(st);

字符\u0085 打印为?并且似乎没有被替换。

【问题讨论】:

标签: java


【解决方案1】:
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;

    public static String trimUtf16(String test) {
        Pattern unicode = Pattern.compile("[^\\x00-\\x7F]",
                Pattern.UNICODE_CASE | Pattern.CANON_EQ
                        | Pattern.CASE_INSENSITIVE);
        Matcher matcher = unicode.matcher(test);
        test = matcher.replaceAll(" ");
        return test;
    }
    System.out.println(trimUtf16("\u0000\u001f\u0085 hi \n"));// hi 

【讨论】:

  • 谢谢!这行得通......我不认为我理解代码。我有一个 utf-8 格式的输入流,我想从输入流中删除 '\u0085' 字符...我正在使用字符串进行测试,看看我是否能够在字符串中替换这个字符。
  • 我明白了.. \u0085 是一个 utf16 字符... U+0085 的 utf8 字符是 0xC2 0x85... 谢谢!您的回复很有用。
  • 我有一个包含有效 utf8 字符 0xC2 0x85 (U+0095) 的输入流。我怎样才能在java中正确阅读这个?我认为使用字节数组无济于事,因为 0x85 超出了范围。基本上,我需要读取来自 java 中包含 0xC2 0x85 的套接字的 utf8 字符。
猜你喜欢
  • 1970-01-01
  • 2014-03-26
  • 2016-02-21
  • 1970-01-01
  • 1970-01-01
  • 2010-10-13
  • 2022-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多