运行此
后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上有一个很好的资源。
答案 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
<强>解释强>
replaceAll
来电与非字&amp;&amp;非点字符+组#1中的大写字母+ 0或更多小写字母+应该后跟1个大写字母的空格。然后在匹配$1.
replaceAll
调用匹配一个逗号后面没有其他逗号,并用文字字符串" & "
替换它。答案 2 :(得分:0)
试试这个
String names = "Amal.PM , Rakesh.KR , Ajith.N";
names = names.replaceAll(" , (?=[^,]*$)", " & ");
System.out.println("New String : "+names);