使用regex java的字符串操作

时间:2015-02-17 12:52:39

标签: java regex string algorithm

我必须使用以下格式的java regex对String进行规范化。

  

数字后跟/前面的字母应该用空格分隔

例如

ABC3.5DV => ABC 3.5 DV  
  

DOT.follow by / before by alphabets应该用空格分隔。

例如

Dr.Batras => Dr . Batras  

在尝试使用.作为字母表的代码之后。

StringBuilder sb = new StringBuilder();
char[] a = smsText.toCharArray();
for (int i = 0; i < a.length; i++)
{
  if (i < a.length - 1 && i + 1 < a.length - 1)
  {

    if ((Character.isDigit(a[i]) && !Character.isDigit(a[i + 1])) || (!Character.isDigit(a[i]) && Character.isDigit(a[i + 1])))
    {
      sb.append(a[i]);
      sb.append(" ");

    } else
    {
      sb.append(a[i]);
    }

  } else
  {
    sb.append(a[i]);
  }

}

2 个答案:

答案 0 :(得分:1)

环顾四周是最好的方法:

str = str.replaceAll("(?i)(?<=[A-Z])(?=[.0-9])|(?<=[.0-9])(?=[A-Z])", " ");

正则表达式匹配字母和点或数字之间的位置,反之亦然,并“替换”它(即插入)空格。

(?i)表示“不区分大小写”,因此它也可以使用小写字母。

答案 1 :(得分:0)

最简单的答案:

private static String format(String s) {
    return s.replaceAll("(?i)(?<=[A-Z])(?=[0-9][.0-9])|(?<=[.0-9])(?=[A-Z])", " ");
}