如果整个String不是“M”,“F”或“M / F”,我需要在Java中使用正则表达式将字符串替换为“UNKNOWN”。换句话说:
一个奇怪的情况是“M /”或“F /”应该变为“未知”。请帮忙,我在这里死了。
我实际上是通过xml映射文件将正则表达式传递给框架,所以我没有对输出形成方式的编程控制。我只能传递正则表达式,以及它被替换为什么。
答案 0 :(得分:3)
你可以使用这样的负向前瞻:
Pattern.compile("^(?!^(?:M|F|M/F)$).*$");
使用String#replaceAll你可以这样做:
String replaced = str.replaceAll("^(?!^(?:M|F|M/F)$).*$", "UNKNOWN");
答案 1 :(得分:0)
您可以测试字符串是否与^(M|F|M/F)$
匹配,如果不匹配则替换它。在伪代码中(因为我不记得如何在Java中使用正则表达式):
s = "M"
if not match(s, '^(M|F|M/F)$')
s = "UNKNOWN"
答案 2 :(得分:0)
if (!Pattern.matches("^M$|^F$|^M/F$", string)) {
string = "UNKNOWN";
}
哦,这和劳伦斯的答案是一样的......我会选择单个案例,但是......我知道这不是你想要的......抱歉:)