如何删除阿拉伯语标签?

时间:2017-08-02 11:35:53

标签: java regex string arabic twitter4j

我使用Twitter4j从Twitter查询推文 我从它中取出文本后,我试图从中过滤主题标签 我现在把它变成字符串 我有这个字符串:“892698363371638784:RT @hikids_ksa:اللعبةخطيرةمراويبيلهامخوتفكيرومهارة متوفرةفي#متجر_هاي_كيدز_الالكتروني..“

我想删除متجر_هاي_كيدز_الالكتروني,因为它在使用java后有Hashtag

我的代码在此输入上无效的问题: “@kaskasomarهيدابلامخمتلمتلغيروبيخونالشعباللبنانيوبيتهموبالارهاببسلانرأيوبيختلفعنرأيالاخرين#سخيف”

部分سخيف由于某种原因未被删除 这是我的方法

static String removeHashtags(String in)
{
    in = in.replaceAll("#[A-Za-z]+","");//remove English hashtags
    in = in.replaceAll("[أ-ي]#+","");//remove Arabic hashtags that have # before it
    return in = in.replaceAll("#[أ-ي]+","");//remove Arabic hashtags that have # after it
}

2 个答案:

答案 0 :(得分:4)

如果您只是想删除任何语言的所有哈希标记,可以编写

in = in.replaceAll("#\\p{IsAlphabetic}+", "");

如果您特别想删除阿拉伯语哈希标记,可以编写

in = in.replaceAll("#\\p{IsArabic}+", "");

因此您不必担心使用从左到右和从右到左的部分构建正则表达式。这提高了代码的可读性。

答案 1 :(得分:2)

问题在于,在第二行中,+应用于主题标签,而不是阿拉伯字符。修正版:

in = in.replaceAll("[أ-ي]+#","");