我有一个Java方法,用于在短语中查找单词,如果找到该单词,则将其从短语中删除。单词和短语可以是任何内容。它们是可变的。这是我的代码:
private String removeWord( String phrase, String word ) {
phrase = phrase.replaceAll( "(?i)" + word , "" );
return phrase;
}
我遇到的问题是,有一个短语传递到这个方法中:
“古罗马帝国如此庞大、强大且雄心勃勃,以至于几乎触及一切。罗马的影响是如此广泛,即使在今天,大多数西方国家的语言、文化、法律和政府仍然带着罗马的印记。”
要查找并从文本中删除的单词是“Roman Empire”,但无法删除。经过调查,我发现这是因为短语中的空格不是常规空格。当我将该短语的文本复制到Notepad++中,并搜索相同的单词时,我也找不到它!
请参见附带的屏幕截图。第5行是我手动编写的一行,正如您所看到的,Notepad++可以找到它,但它无法在第1行中找到“Roman Empire”。在文件中计算“Roman Empire”时,它仅发现了一次!
那个奇怪的空间是什么?!
(更多细节)
我用Java编写了这段代码来检查两个空格之间的差异:
char a = ' ';
char b = ' ';
System.out.println( (int) a ); // Prints 160
System.out.println( (int) b ); // Prints 32
奇怪的是,这2个空格看起来完全相同!