【譯】JS基礎算法腳本:子字符首字符大寫

需求

給出一字符串,返回子字符首字符大寫的字符串正則表達式

titleCase("I'm a little tea pot") should return "I'm A Little Tea Pot".

思路1

  1. 字符串小寫後切割爲數組數組

  2. for循環操做數組元素的首字符函數

  3. 拼接字符code

function titleCase(str) {
    var newArr = str.toLowerCase().split(' ');
    for(var i=0; i<newArr.length ; i++) {
        newArr[i] = newArr[i].replace(newArr[i][0],newArr[i][0].toUpperCase());
    }
    
    return newArr.join(" ");
}
titleCase("I'm a little tea pot");

思路2

  1. 字符串小寫後切割爲數組regexp

  2. 利用map方法對數組元素統一風格化對象

function titleCase(str) {
    var newArr = str.toLowerCase().split(" ");
    newArr = newArr.map(function(val) {
        return val.replace(val[0],val[0].toUpperCase);
    });
    
    return newArr.join(" ");
}
titleCase("I'm a little tea pot");

思路三

  1. 直接對字符串小寫化,replace操做字符串

function titleCase(str) {
    return str.toLowerCase().replace(/(^|\s)\S/g, (val) => val.toUpperCase());
}
titleCase("I'm a little tea pot");

總結

三種思路其實都是先轉化爲小寫字符,再經過str.replace()替換匹配項it

相關

str.split()
  • 匹配separation來分割字符串,返回新數組,不改變原數組io

str.replace(regexp|substr, newSubstr|function)
  • regexp (pattern)
    一個 RegExp 對象或者其字面量。該正則所匹配的內容會被第二個參數的返回值替換掉。for循環

  • substr (pattern)
    一個要被 newSubStr 替換的字符串。其被視爲一整個字符串,而不是一個正則表達式。僅僅是第一個匹配會被替換。

  • newSubStr (replacement)
    用於替換掉第一個參數在原字符串中的匹配部分的 字符串。該字符串中能夠內插一些特殊的變量名。參考下面的使用字符串做爲參數。

  • function (replacement)
    一個用來建立新子字符串的函數,該函數的返回值將替換掉第一個參數匹配到的結果。參考下面的指定一個函數做爲參數。

  • 返回值
    一個部分或所有匹配由替代模式所取代的新的字符串。

有其餘好的方法或思路的道友,不妨在沙發區神交一番。

相關文章
相關標籤/搜索