猿问

如何使用正则表达式删除破折号和空格?

我在从我的代码中删除破折号和空格时遇到问题。例如:我希望 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 这样的词似乎消失了,但算法似乎被空格绊倒了。对于任何多余的代码表示歉意,我对此仍然有点陌生!


largeQ
浏览 107回答 1
1回答

慕勒3428872

不要在字符类|内部使用[],除非您想匹配该|字符。没必要进去-两次。-在字符类中具有特殊含义[],因此您需要对其进行转义(或将其放在最前面或最后)。.在字符类中没有特殊含义[],因此无需转义它。\s匹配所有空格,但您不想替换换行符,因此请改用\h。无需在正则表达式的后半部分中匹配\s或(已在前半部分中介绍)。-总而言之,这意味着:[\h.$,;'-]|\b(?:LLC|Company|Incorporated|Co|Manufacturer|The|Limited|Ltd|Inc|Chemicals|Solutions)\b请参阅演示。
随时随地看视频慕课网APP

相关分类

Java
我要回答