相关疑难解决方法(0)

76
推荐指数
5
解决办法
41万
查看次数

从字符串中删除特定unicode范围的字符

我有一个程序正在从twitter流api实时解析推文.在存储它们之前,我将它们编码为utf8.某些字符最终出现在字符串中?,??或??? 而不是他们各自的unicode代码并导致问题.经过进一步调查,我发现有问题的字符来自"表情符号"块,U + 1F600 - U + 1F64F,以及"其他符号和象形文字"块,U + 1F300 - U + 1F5FF.我尝试删除,但是不成功,因为匹配器最终替换了字符串中的几乎每个字符,而不仅仅是我想要的unicode范围.

String utf8tweet = "";
        try {
            byte[] utf8Bytes = status.getText().getBytes("UTF-8");

            utf8tweet = new String(utf8Bytes, "UTF-8");

        } 
        catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
Pattern unicodeOutliers = Pattern.compile("[\\u1f300-\\u1f64f]", Pattern.UNICODE_CASE | Pattern.CANON_EQ | Pattern.CASE_INSENSITIVE);
Matcher unicodeOutlierMatcher = unicodeOutliers.matcher(utf8tweet);
utf8tweet = unicodeOutlierMatcher.replaceAll(" ");
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能删除这些字符?

java regex utf-8

15
推荐指数
3
解决办法
3万
查看次数

我怎么能从java中删除一个字符串的阿拉伯标点符号

我正在写一本阿拉伯语字典,我得到像
String original ="'أبنفلانا:عابهورماهبخلةسوء.'"这样的句子.从我的数据库,但我无法处理句子而不删除重音和标点符号

我试过用

import java.text.Normalizer;
import java.text.Normalizer.Form;
import java.util.regex.Pattern;

public static String deAccent(String str) {
    String nfdNormalizedString = Normalizer.normalize(str, Normalizer.Form.NFD); 
    Pattern pattern = Pattern.compile("\\p{InCombiningDiacriticalMarks}+");
    return pattern.matcher(nfdNormalizedString).replaceAll("");
} 
Run Code Online (Sandbox Code Playgroud)

但它没有用

java arabic

3
推荐指数
2
解决办法
3449
查看次数

标签 统计

java ×3

regex ×2

arabic ×1

utf-8 ×1