我必须使用以下格式的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]);
}
}
答案 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])", " ");
}