Java Regex:字符串格式

时间:2013-08-06 10:05:40

标签: java regex string

运行此

Names.replaceAll("^(\\w)\\w+", "$1.")

我有一个String Like

Names = F.DA, ABC, EFG

我想要一个像

这样的字符串格式
F.DA, A.BC & E.FG

我该怎么做?

更新:

如果我有一个像

这样的名字

Robert Filip, Robert Morris, Cirstian Jed

我想要

R.Filp, R.Morris & C.Jed

我很高兴,如果你也建议我在JAVA Regex上有一个很好的资源。

3 个答案:

答案 0 :(得分:6)

您需要将结果重新分配回Names,因为字符串是不可变的,replaceAll方法不会替换,而是返回一个新的字符串:

names = names.replaceAll(", (?=[^,]*$)", " & ")

答案 1 :(得分:2)

以下应该适合你:

 String names = "Robert Filip, Robert Morris, Cirstian Jed, S.Smith";
 String repl  = names.replaceAll("((?:^|[^A-Z.])[A-Z])[a-z]*\\s(?=[A-Z])", "$1.")
                     .replaceAll(", (?=[^,]*$)", " & ");

 System.out.println(repl); //=> R.Filip, R.Morris, C.Jed & S.Smith

<强>解释

  1. 第一次replaceAll来电与非字&amp;&amp;非点字符+组#1中的大写字母+ 0或更多小写字母+应该后跟1个大写字母的空格。然后在匹配$1.
  2. 前插入一个点
  3. 2ns replaceAll调用匹配一个逗号后面没有其他逗号,并用文字字符串" & "替换它。

答案 2 :(得分:0)

试试这个

    String names = "Amal.PM , Rakesh.KR , Ajith.N";
    names = names.replaceAll(" , (?=[^,]*$)", " & ");
    System.out.println("New String : "+names);