我正在尝试将字符串重新格式化为我想要的格式。我一直试图解决这个问题,但我想不出任何使用正则表达式的优雅解决方案。我想出了一个使用字符串的解决方案indexOf()
,replace()
但它并不完全漂亮。
我想转换任何字符串,以便在“-”的每一侧都有一个空格。
可能的输入:
"abc- abc"
"abc -abc"
"abc - abc"
"abc-abc"
并且每种情况都应转换为
"abc - abc"
谢谢你的帮助。如果您需要更多说明,请告诉我。
使用\s*-\s*
模式:
"abc- abc".replaceAll("\\s*-\\s*", " - "))
最简单的可能是使用这种模式:
[ ]?-[ ]?
像这样:
str = str.replaceAll("[ ]?-[ ]?", " - ");
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
=> 空间(实际上是\s
但Java需要 double \\
)*
=> 0 或更多-
=> 简单的'-'有关正则表达式的更多信息:正则表达式基本语法参考