【发布时间】:2021-11-30 15:40:34
【问题描述】:
我需要在一些文本前面附加一个前缀,文本和前缀之间有空格。
例如: “示例文本”将变为 “[EXTERNAL] 示例文本”。
如果前缀已经包含在文本中(不区分大小写),那么我需要将前缀替换为全部大写。
例如,如果文本是:“[External] Sample”或“[External]Sample”或“[EXTERNAL]Sample”:
在所有情况下,我都需要在前缀和示例文本之间添加空格的“[EXTERNAL] Sample”。
private static final String TITLE_REGEX_PATTERN = "(?i)"+ Pattern.quote("[external]");
private static final String EXTERNAL_TITLE_PREFIX = "[EXTERNAL] ";
private String appendPrefixToTitle(String title) {
if (!titleContainsPrefix(title)) {
return "[EXTERNAL] " + title;
} else {
return title.replaceFirst(TITLE_REGEX_PATTERN, EXTERNAL_TITLE_PREFIX);
}
}
private boolean titleContainsPrefix(String title) {
return StringUtils.beginsWithIgnoreCase(title, EXTERNAL_TITLE_PREFIX.trim());
}
如果标题已经包含正确的格式,这样做会增加一个额外的空格。在不拆分输入的情况下向我建议一个更好的方法。
【问题讨论】:
-
您只检查两种可能的模式,显然还有更多。
标签: java regex string replaceall