-1

我无法从我的代码中删除破折号和空格。例如:我希望 JD Smith Company 成为 JDSmith 或 Mike-Jones Inc 成为 MikeJones。以下是我目前拥有的代码。

Pattern p = Pattern.compile("[\\.$|,|;|'|-|\\s|-]|\\b(\\s|LLC|Company|Incorporated|Co|Manufacturer|The|Limited|Ltd|Inc|Chemicals|Solutions|-\\s)\\b", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(dncMfgName.getStringCellValue());
String name = m.replaceAll("");

LLC 和 Inc 之类的词似乎消失了,但算法似乎被空格绊倒了。为任何多余的代码道歉,我对此还是有点陌生​​!

4

1 回答 1

3
  • 不要|[]字符类中使用,除非你想匹配|字符。

  • 没有必要-在那里两次。

  • -在字符类中具有特殊含义[],因此您需要对其进行转义(或将其放在首位或放在最后)。

  • .在字符类中没有特殊含义[],因此无需对其进行转义。

  • \s匹配所有空格,但您不想替换换行符,因此请\h改用。

  • 无需在正则表达式的后半部分匹配\s或匹配(前半部分已涵盖)。-

总而言之,这意味着:

[\h.$,;'-]|\b(?:LLC|Company|Incorporated|Co|Manufacturer|The|Limited|Ltd|Inc|Chemicals|Solutions)\b

演示

于 2019-08-28T05:42:38.447 回答