我90%有一个正则表达式,但我真的很感激一些帮助,最终确定它。
我从以下字符串开始。
String toiletDer= "TOILET, BOG, PUBLIC CONVENIENCE";
//格式化代码。
我需要它成为"({BOG}|{TOILET}|{PUBLIC CONVENIENCE})"
到目前为止我的正则表达式是。
toiletDer.replaceAll("(\\p{Alpha}+)", "{$1}|").replace(",", "")
它产生following
"{TOILET}| {BOG}| {PUBLIC}| {CONVENIENCE}|"
我只希望在字符串中到达逗号时在新的{}集合中包含单词而不是新单词,这是当前它的工作方式。
答案 0 :(得分:3)
岂不
String string = "({" + toiletDer.replaceAll(",\\s*","}|{") + "})"
更容易吗?
答案 1 :(得分:1)
要在匹配的部分中包含空格,您可以使用[\\p{Alpha}\\s]+
。要在最后匹配|
,您可以使用\\|$
,因此可以尝试这种方式
toiletDer.replaceAll("\\s*([\\p{Alpha}\\s]+)", "{$1}|").replaceAll(",|\\|$", "")
我还在第一个正则表达式的开头添加了\\s*
,以便在{ BOG}
开头删除空格。
如果您想用括号括起结果,可以在开头和结尾添加它们。 \p{Alpha}
也不包含.
,因为它不是字母数字字符。要将其包含在正则表达式中,您可以将其添加到[]
字符类
这是更新的代码。
"(" + toiletDer.replaceAll("\\s*([\\p{Alpha}\\s]+)", "{$1}|")
.replaceAll(",|\\|$", "") + ")";
答案 2 :(得分:0)
试试这个:
toiletDer.replaceAll("([^,]+)", "{$1}|").replace(",", "")
这假设您只有单词和逗号,而不是特殊字符或其他字符。
答案 3 :(得分:0)
将所有逗号替换为}|{
,并在开头添加{
,在结尾添加}
。
但是这仍然没有按你想要的单词排序,即你会得到{TOILET}|{BOG}|{PUBLIC CONVENIENCE}
而不是{BOG}|{TOILET}|{PUBLIC CONVENIENCE}