我有一小段代码,它接受一个输入字符串,清除部分(删除特殊字符,如''\。并用空格替换任何其他字符)&然后生成一个新字符串。
public class Example
{
public static void main(String... args)
{
charFilter("I.T rocks. It's time to get a job.Come on");
}
public static String charFilter(String inText) {
String outText="";
inText = inText.replaceAll("['’\\.]", "");
outText = inText.replaceAll("[^a-zA-Z0-9- ]", " ");
System.out.println(outText);
return outText;
}
}
上面代码的输出是“IT摇滚的时间来获得一份工作”。但我需要得到一个输出“IT摇滚它的时间来找工作加油”(工作和来应该显示为单独的词,但IT应该显示为IT)因为我们可以期望用户输入数据忘记添加完全停止后的空间。
有人可以建议我采取什么方法。
答案 0 :(得分:1)
您在第一个正则表达式中替换.
,因此它不会被第二个正则表达式中的空格替换。
答案 1 :(得分:1)
您将需要使用有关语义的信息,这就是A.I.正则表达式比正则表达式更复杂。如果没有其他信息,简单的正则表达式将无法区分人类认为的缩写或句子的结尾/开头。
一个可能的建议,但不是100%的解决方案,是寻找单个字符后跟或用点分隔。虽然我可以想象有一个句子以单个字符结尾而下一个以一个字符开头,但它可能是许多情况下的有效解决方案。也许您可以使用输入语言或主题域(如果有)的一些知识为其他特殊字符提出类似的解决方法。
完整的通用解决方案是重新阅读人工并手动纠正错误。对于所有可能的文本输入,正则表达式或其他自动替换不会接近100%。