0

我正在尝试将字符串重新格式化为我想要的格式。我一直试图解决这个问题,但我想不出任何使用正则表达式的优雅解决方案。我想出了一个使用字符串的解决方案indexOf()replace()但它并不完全漂亮。

我想转换任何字符串,以便在“-”的每一侧都有一个空格。

可能的输入:

"abc- abc"
"abc -abc"
"abc - abc"
"abc-abc" 

并且每种情况都应转换为

"abc - abc"

谢谢你的帮助。如果您需要更多说明,请告诉我。

4

3 回答 3

2

使用\s*-\s*模式:

"abc- abc".replaceAll("\\s*-\\s*", " - "))
于 2013-07-18T03:07:12.463 回答
1

最简单的可能是使用这种模式:

[ ]?-[ ]?

像这样:

str = str.replaceAll("[ ]?-[ ]?", " - ");
于 2013-07-18T03:06:37.723 回答
1

使用String#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 或更多
  • - => 简单的'-'

有关正则表达式的更多信息:正则表达式基本语法参考

于 2013-07-18T03:07:44.987 回答