替换除了字母字符和句点之外的所有令牌

时间:2016-02-10 01:45:47

标签: java regex string tokenize

我正在使用一个字符串标记器,一次只能输入一个字。当我正在读这个标记时,我想要从中删除所有不是字母字符(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);
    }

所以我希望: 我是“我”是鲍勃。我去学校和I_Like代码。 会显示: 嗨,我是鲍勃。我得到了学校和ilike代码

这是我在这里的第一个问题,如果它的格式很差,那就很抱歉。

2 个答案:

答案 0 :(得分:1)

  

我想从中删除所有不是字母字符(A-Z)和句点(。)

的内容

要与C:\Users\Owner\Desktop\SpaceRadar\src\SpaceRadar.EntityFramework>dnx ef dbcontext scaffold "data source=database_server;initial catalog=DemoDb;persist security info=True;user id=user;password=*****" EntityFramework.MicrosoftSqlServer -a -c "DataStore" -o Model 一起使用,此正则表达式会匹配要删除的所有不需要的字符:

Illegal character '/' (Unicode hexadecimal 002F)

DEMO

答案 1 :(得分:0)

替换

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