【codewars】將句子的首字母轉大寫

威爾史密斯的兒子賈登史密斯是電影的明星,如空手道小子(2010)和地球以後(2013)。賈登以他經過Twitter提供的一些哲學而聞名。在Twitter上寫做時,他幾乎老是將每一個單詞都用於大寫。java

你的任務是將字符串轉換爲Jaden Smith的編寫方式。這些字符串是來自Jaden Smith的實際引用,但它們沒有像他最初輸入的那樣大寫。(將每一個單詞的首字母大寫)this

例:code

不是Jaden的風格: "How can mirrors be real if our eyes aren't real"
Jaden的風格:     "How Can Mirrors Be Real If Our Eyes Aren't Real"

請注意,Java版本要求空字符串的返回值爲null或null。jade

  1. 我最初的解決方法
public class JadenCase {


     public  String toJadenCase(String phrase) {
        // TODO put your code below this comment
        if (phrase == null || "".equals(phrase)) {
            return null;
        }
        String list[] = phrase.split(" ");

        String juzi = "";
        if (list != null && list.length > 0) {
            for (int i = 0; i < list.length; i++) {
                String uppWord = list[i].toUpperCase();
                char first = uppWord.charAt(0);
                String one = first + list[i].substring(1, list[i].length()) + " ";
                juzi += one;
            }
                        return juzi.substring(0,juzi.length()-1);
        }
        return null;
    }

}

投票排行前三的最佳解決方法

import java.lang.Character;

public class JadenCase {

  public String toJadenCase(String phrase) {
    if(phrase == null || phrase.equals("")) return null;
    
    char[] array = phrase.toCharArray();
    
    for(int x = 0; x < array.length; x++) {
      if(x == 0 || array[x-1] == ' ') {
        array[x] = Character.toUpperCase(array[x]);
      }
    }
    
    return new String(array);
  }

}

2.字符串

import java.util.Arrays;
import java.util.stream.Collectors;

public class JadenCase {

  public String toJadenCase(String phrase) {
      if (null == phrase || phrase.length() == 0) {
          return null;
      }

      return Arrays.stream(phrase.split(" "))
                   .map(i -> i.substring(0, 1).toUpperCase() + i.substring(1, i.length()))
                   .collect(Collectors.joining(" "));
  }

}

3.get

import java.util.Arrays;
import java.util.stream.Collectors;

public class JadenCase {

  public String toJadenCase(String phrase) {
    if(phrase == null || phrase.isEmpty()) return null;
    return Arrays.stream(phrase.split("\\s+")).map(str -> Character.toUpperCase(str.charAt(0)) + str.substring(1))
        .collect(Collectors.joining(" "));
  }

}

參考連接:
Solutions: Jaden Casing Stringsstring

相關文章
相關標籤/搜索