在字符串中放置一个空格

Emm*_*uel 2 java string

假设我有一个像"MikeJackson"这样的字符串,我试图找到一种方法在两者之间放置一个空间,所以它变成了"迈克杰克逊".然后将相同的方法应用于另一个字符串,说"JohnBull"会让我回到"John Bull".这是我提出的代码:

public class Test{

    public Test(){

    }
public void sep(String s){
    s = s + " ";
   char[] charArray = s.toCharArray();
   int l = s.length();
for (int i = 0; i < l; i++){
    char p = ' ';

    if(Character.isUpperCase(s.charAt(0))){
        continue;   
    }
    else if (Character.isUpperCase(s.charAt(i))){
        int k = s.indexOf(s.charAt(i));
        charArray[l] = charArray[--l];
        charArray[k-1] = p;
    }
    //System.out.println(s.charAt(i));
}
}
    public static void main (String args[]){

    Test one = new Test();

    one.sep("MikeJackson");
    }  
}
Run Code Online (Sandbox Code Playgroud)

我的想法是在String中添加一个空格,以便"MikeJackson"成为"Mike Jackson",然后将字符向右移动(检查我找到大写的位置)忽略第一个大写字母.然后将一个字符''代替字符'J',但将'J'移到右边.这就是我试图用我的方法实现的,但看起来我需要一些指导.如果有人可以帮忙.谢谢.

Sil*_*cea 17

试试这个:

"MikeJackson".replaceAll("(?!^)([A-Z])", " $1");
Run Code Online (Sandbox Code Playgroud)

对于每个上层字符我都在添加空格.

此外,它适用于多个大写单词.我收到Word1 Word2 Word3Word1Word2Word3.


Jer*_*vel 5

public static void sep(String s) {
    StringBuilder result = new StringBuilder();
    for (int i = 0; i < s.length(); i++) {

        result.append(s.charAt(i));
        if (i != s.length() -1 && Character.isUpperCase(s.charAt(i + 1))) {
            result.append(" ");
        }
    }
    System.out.println(result);
}
Run Code Online (Sandbox Code Playgroud)

如果下一个字符是大写,只需添加一个空格.