1. 程式人生 > >ES6-字串擴充套件

ES6-字串擴充套件

for…of…遍歷

for (let codePoint of 'foo') {
  console.log(codePoint)
}
// "f"
// "o"
// "o"

注意:

for (let codePoint in 'foo') {
  console.log(codePoint)
}
// 0
// 1
// 2

includes(), startsWith(), endsWith()

includes(): 返回布林值,表示是否找到了引數字串。

startsWith():返回布林值,表示引數字串是否在源字串的頭部。

endsWith(): 返回布林值,表示引數字串是否在源字串的尾部。

這三個方法都支援第二個引數,表示開始搜尋的位置。

repeat()

repeat方法返回一個新字串,表示將原字串重複n次。

引數如果是小數,會被取整。
引數必須大於等於0
引數NaN等同於0。
引數是字串,則會先轉換成數字。

padStart(),padEnd()

ES2017 引入了字串補全長度的功能。如果某個字串不夠指定長度,會在頭部或尾部補全。padStart()用於頭部補全,padEnd()用於尾部補全。
padStart和padEnd一共接受兩個引數,第一個引數用來指定字串的最小長度,第二個引數是用來補全的字串。

如果原字串的長度,等於或大於指定的最小長度,則返回原字串。
如果用來補全的字串與原字串,兩者的長度之和超過了指定的最小長度,則會截去超出位數的補全字串。
如果省略第二個引數,預設使用空格補全長度。
padStart的常見用途是為數值補全指定位數。

模板字串

若要構造模板字串,請使用重讀符號(也稱為反引號)(‘) 替代單引號或雙引號括起字串。下面的程式碼示例演示一個簡單的模板字串。

`Template strings can include 'single quotes' and "double quotes" inline.`

模板字串可以在無需使用換行符 (\n) 的情況下包含換行。

`Template strings can include line breaks and don't need the linefeed character.`

{表示式},其中表達式是任意 JavaScript 表示式(如變數或函式),如以下示例中所示。

var name = "Bob";
var str = `Hello ${name}, how are you this fine ${partOfDay()}?`
console.log(str);

function partOfDay () {
    var hour = new Date().getHours();

    if (hours <= 12) {
        return “morning”;
    } else if (hours <= 5) {
        return “afternoon”;
    } else {
        return “evening”;
    }
}

// Output:
// Hello Bob, how are you this fine afternoon?

帶標記的模板函式,它可以通過使用由模板字串中引數呼叫的函式來修改此模板字串的值。第一個引數是字串文字的陣列,由內含的模板字串表示式分隔;第二個引數是包含模板字串表示式的值的陣列(Rest 引數)。
在以下示例中,帶標記的模板函式 buildURL 用於構造 URL。此語法要使用後面緊跟模板字串的函式名。

function buildURL(strArray, ...valArray) {
    var newUrl = strArray[0] + "ja-ja" + "/" + valArray[1] +
    "/" + valArray[2];

    return newUrl;
}

var lang = "en-us";
var a = "library";
var b = "dn771551.aspx";

// Call the tagged template function.
var url = buildURL`http://msdn.microsoft.com/${lang}/${a}/${b}`;

console.log(url);

// Output:
// http://msdn.microsoft.com/ja-ja/library/dn771551.aspx

如果需要訪問傳入的原始字串值,則傳遞給帶標記的模板函式的第一個引數支援可返回傳入字串的原始字串形式的 raw 屬性。

function buildURL(strArray, ...valArray) {
    console.log(strArray.raw);
}

var lang = "en-us";
var a = "library";
var b = "dn771551.aspx";

// Call the tagged template function.
var url = buildURL`http://msdn.microsoft.com/${lang}/${a}/${b}`;

// Ouput:
// http://msdn.microsoft.com/
// /
// en-us
// library