在字符串的每个大写字母之前附加“,”

时间:2016-03-26 18:10:28

标签: java regex

我需要在字符串的每个大写字母前附加,。我应该使用正则表达式还是split

示例:

String s = "TonyRoyTroyMagic";

我希望输出像

"Tony,Roy,Troy,Magic"

2 个答案:

答案 0 :(得分:1)

使用

String s = "TonyRoyTroyMagic";
s = s.replaceAll("(?<=[A-Za-z0-9])[A-Z]", ",$0");   
System.out.println(s); // Tony,Roy,Troy,Magic

?<=可以检查大写字母[A-Z]是否至少落后[A-Za-z0-9]。它将阻止将逗号作为字符串的第一个字符。

在您显示的示例中,以下内容也是有效的

(?<=[a-z])[A-Z]

答案 1 :(得分:0)

你可以迭代字符串并创建一个新的字符串:

   String S = "TonyRoyTroyMagic";
   StringBuilder sb = new StringBuilder();

   for (int i = 0;i<S.length();i++ ) {
        char c = S.charAt(i);
        if (Character.isUpperCase(c) && i != 0 ) {
            sb.append(",");
        }
        sb.append(c);
   }
   System.out.println(sb.toString());
   //result: Tony,Roy,Troy,Magic
相关问题