在某些情况下,我必须删除字符串中的一个或多个单词。例如,
我的字符串是 incabcincdefinc inc。公司。为此,我需要删除 inc.
和 inc
。
即,输出应为 incabcincdefinc
。
即,根据以下条件删除所有 inc
:
<space>inc<space>
<space>inc<.>
<space>inc<end string>
<space>inc
最佳答案
你可能可以逃脱这样的惩罚:
str = str.replaceAll("[ ](?:inc|ltd|corp)\\b\\.?", "");
方括号仅用于使中间的空格字符更明显,可以省略,只要保留空格即可。通过断言业务实体扩展后面有一个字边界 (\\b
) 来满足您的条件。这意味着接下来没有字母、数字或下划线(它捕获了您的所有条件)。然后该模式还尝试包含文字句点 (\\.
),但不关心是否存在非句点 (?
)。一切都被替换为空字符串。请注意,在您的第一个条件中,我不匹配并删除空格,因为这会使 SomeCompany inc inc
变为 SomeCompanyinc
。
如果您想不区分大小写地查找扩展名,则需要使用更长的语法:
Pattern pattern = Pattern.compile(
"[ ](?:inc|ltd|corp)\\b\\.?",
Pattern.CASE_INSENSITIVE
);
Matcher matcher = pattern.matcher(str);
str = matcher.replaceAll("");
关于java - 根据外观从字符串中删除单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13439953/