ECMAScript 在所有字符串上都提供了 trim()方法。这个方法会创建字符串的一个副本,删除前、 后所有空格符,再返回结果。比如:
let stringValue = " hello world ";
let trimmedStringValue = stringValue.trim(); 11 console.log(stringValue); // " hello world "
console.log(trimmedStringValue); // "hello world"
由于 trim()返回的是字符串的副本,因此原始字符串不受影响,即原本的前、后空格符都会保留。 12 另外,trimLeft()和 trimRight()方法分别用于从字符串开始和末尾清理空格符。
1. repeat()方法:
ECMAScript 在所有字符串上都提供了 repeat()方法。这个方法接收一个整数参数,表示要将字 13 符串复制多少次,然后返回拼接所有副本后的结果。
let stringValue = "na "; console.log(stringValue.repeat(16) + "batman");
// na na na na na na na na na na na na na na na na batman
2. padStart()和 padEnd()方法:
padStart()和 padEnd()方法会复制字符串,如果小于指定长度,则在相应一边填充字符,直至
满足长度条件。这两个方法的第一个参数是长度,第二个参数是可选的填充字符串,默认为空格 (U+0020)。
let stringValue = "foo";
console.log(stringValue.padStart(6)); // " foo"
console.log(stringValue.padStart(9, ".")); // "......foo"
console.log(stringValue.padEnd(6)); // "foo "
console.log(stringValue.padEnd(9, ".")); // "foo......"
可选的第二个参数并不限于一个字符。如果提供了多个字符的字符串,则会将其拼接并截断以匹配 指定长度。此外,如果长度小于或等于字符串长度,则会返回原始字符串。
let stringValue = "foo"; console.log(stringValue.padStart(8, "bar")); // "barbafoo"
console.log(stringValue.padStart(2));
console.log(stringValue.padEnd(8, "bar"));
console.log(stringValue.padEnd(2));
3. 字符串迭代与解构:
字符串的原型上暴露了一个@@iterator 方法,表示可以迭代字符串的每个字符。可以像下面这样 手动使用迭代器:
let message = "abc";
let stringIterator = message[Symbol.iterator]();
console.log(stringIterator.next()); // {value: "a", done: false} console.log(stringIterator.next()); // {value: "b", done: false} console.log(stringIterator.next()); // {value: "c", done: false} console.log(stringIterator.next()); // {value: undefined, done: true}
在 for-of 循环中可以通过这个迭代器按序访问每个字符:
for (const c of "abcde") {
console.log(c);
}
// a
// b
// c
// d
// e
有了这个迭代器之后,字符串就可以通过解构操作符来解构了。比如,可以更方便地把字符串分割 为字符数组:
let message = "abcde";
console.log([...message]); // ["a", "b", "c", "d", "e"]