替换令牌中的所有内容,字母字符和句点除外

Replacing everything from a token except Alphabetic charaticers and periods

我正在使用一次接受一个单词的字符串分词器。当我阅读此标记时,我想从中删除所有不是字母字符 (A-Z) 和句点 (.) 的内容。我目前正在处理类似的东西,但它会留下一些奇怪的字符以及“,”之类的东西。我想知道是否有更居高临下和更有效的方式来处理这样的事情。

StringTokenizer biDoc = new StringTokenizer(new String(value.getBytes()));
while(biDoc.hasMoreElements()){
        String token = new String(biDoc.nextToken().replaceAll("[-@#$%^&*',;!?:()\'\"/<>]+_", "").replace("/[0-9]", ""));
        contentPrev.add(token);
    }

所以我希望: H''''i i""m Bob.我去上学 I_Like 编程。 会显示: 嗨,我是鲍勃。我上学并且喜欢编程

这是我在这里的第一个问题,如果格式不正确,请见谅。

替换

String token = new String(biDoc.nextToken().replaceAll("[-@#$%^&*',;!?:()\'\"/<>]+_", "").replace("/[0-9]", ""));

String token = new String(biDoc.nextToken().replaceAll("[\W_]", "").replace("/[0-9]", ""));

本质上你不想知道所有非字母数字字符,所有这些非字母数字字符都可以用 \W 表示。并且要生成这样的输出,您需要在每个循环的末尾附加一个空格,如下所示。

contentPrev.add(token + " "); // Of course you should use StringBuilder or StringBuffer depending on the requirements of thread safety. 

有关详细信息,请参阅 documentation

I want to strip everything from it that is no a Alphabetic character (A-Z) and a period(.)

要与 replaceAll() 一起使用,此正则表达式匹配所有要删除的不需要的字符:

[^a-zA-Z.]+

DEMO