我正在尝试将字符串重新格式化为我想要的格式。我一直试图弄清楚这一点,但我想不出任何使用正则表达式的优雅解决方案。我使用String的indexOf()
和replace()
提出了一个解决方案,但它并不完全漂亮。
我想转换任何字符串,以便在“ - ”的每一侧只有一个空格。
可能的输入:
"abc- abc"
"abc -abc"
"abc - abc"
"abc-abc"
并且每个案例都应转换为
"abc - abc"
感谢您的帮助。如果您需要更多说明,请告诉我。
答案 0 :(得分:2)
使用\s*-\s*
模式:
"abc- abc".replaceAll("\\s*-\\s*", " - "))
答案 1 :(得分:1)
最简单的可能就是使用这种模式:
[ ]?-[ ]?
像这样:
str = str.replaceAll("[ ]?-[ ]?", " - ");
答案 2 :(得分:1)
String pattern = "\\s*-\\s*";
String s1 = "abc- abc";
String s2 = "abc -abc";
String s3 = "abc - abc";
String s4 = "abc-abc";
System.out.println(s1.replaceAll(pattern, " - "));
System.out.println(s2.replaceAll(pattern, " - "));
System.out.println(s3.replaceAll(pattern, " - "));
System.out.println(s4.replaceAll(pattern, " - "));
"\\s*-\\s*"
正则表达式的解释:
\\s
=> space(实际上是\s
但Java需要加倍\\
)*
=> 0或更多-
=>简单' - '有关正则表达式的更多信息:Regular Expression Basic Syntax Reference