3

我有一个 Java 方法,可以在短语中查找单词,如果找到该单词,则将其从短语中删除。单词和短语可以是任何东西。它们是变体。这是我的代码:

private String removeWord( String phrase, String word ) {
    phrase = phrase.replaceAll( "(?i)" + word , "" );
    return phrase;
}

我遇到的问题是有一个短语传递给这个方法:

古罗马帝国如此庞大、如此强大和如此雄心勃勃,以至于它几乎对它所触及的一切都产生了强大的影响。罗马的影响如此广泛,以至于即使在今天,大多数西方国家的语言、文化、法律和政府仍然带有罗马的印记。

从文本中查找和删除的单词是“罗马帝国”,但它无法删除。经过一番调查,我发现这是因为短语中的空格不是正常空格。当我在 Notepad++ 中复制该短语的文本并搜索相同的单词时,我也找不到它!

请参阅随附的屏幕截图。第 5 行是我手动编写的一行,如您所见,Notepad++ 能够找到它,但在第 1 行中找不到“罗马帝国”。当我在文件中数“罗马帝国”时,它只找到了一次!

另一个奇怪的空间是什么?!

在此处输入图像描述

-------------------------------------------------- --- >> 编辑:更多细节:

我用 Java 编写了这段代码来检查两个空格之间的区别:

char a = ' ';
char b = ' ';

System.out.println( (int) a );  // Prints 160
System.out.println( (int) b );  // Prints 32

奇怪的是这两个空间看起来完全一样!

4

1 回答 1

1

可能是一个非破坏空间。您可以显式查找它们或用 \s(又名 [:space:])替换您的搜索字符串空格。

于 2012-10-04T18:07:24.973 回答