我正在使用一个字符串标记器,一次只能输入一个字。当我正在读这个标记时,我想要从中删除所有不是字母字符(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代码
这是我在这里的第一个问题,如果它的格式很差,那就很抱歉。
答案 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)
答案 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。