文章博客

技术团队文档示例


ES6-4 字符串的扩展

<h1>字符串的扩展</h1> <h3>1.字符的 Unicode 表示法</h3> <h4>rest参数与数组</h4> <pre><code class="language-javascript">function log(...value) { console.log(value); console.log(...value); } log([1,2,3]); // [ [ 1, 2, 3 ] ] // [ 1, 2, 3 ] log(1,2,3); // [ 1, 2, 3 ] // 1 2 3</code></pre> <h4>2.字符串的遍历</h4> <p>使用for...of循环遍历</p> <pre><code class="language-javascript">for(let item of 'foo'){ console.log(item); //'f' 'o' 'o' }</code></pre> <h4>3.includes(),startsWith(),endsWith()</h4> <p>传统的字符串只有indexOf方法,可以用来确定一个字符串是否包含在另一个字符串中。ES6又提供了三种新方法。</p> <ul> <li>includes():返回布尔值,表示是否找到了参数字符串。</li> <li>StartsWith():返回布尔值,表示参数字符串是否在原字符串的头部。</li> <li>endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部。</li> </ul> <pre><code class="language-javascript">let s = 'Hello world!' s.startsWith("Hello") //true s.endsWith('!') //true s.includes('o') //true</code></pre> <p>这三种方法都支持第二个参数,表示开始搜索的位置。</p> <pre><code class="language-javascript">let s = 'Hello world!'; s.startsWith('world',6)//true s.endsWith('Hello',5)//true 前5个字符串 s.includes('Hello',6)//false //上面代码表示,使用第二个参数n时,**endsWith的行为与其他两个方法有所不同。它针对前n个字符,**而其他两个方法针对从第n个位置直到字符串结束。</code></pre> <h4>4.repeat()</h4> <p>repeat返回一个新字符串,表示将原字符串重复n次。</p> <pre><code class="language-javascript">'x'.repeat(3)//'xxx' 'hello'.repeat(2)//'hellohello' 'na'.rapeat(0) //''</code></pre> <p>如果参数是小数,则会取整。</p> <pre><code class="language-javascript">'na'.repeat(2.9) //'nana'</code></pre> <p>如果参数是负数或者是Infinity,<strong>会报错</strong></p> <pre><code class="language-javascript">'na'.repeat(Infinity) //RangError 'na'.repeat(-1)//RangError</code></pre> <p>如果参数在0到-1之间则视为为0</p> <pre><code class="language-javascript">'na'.repeat(-0.9) //'' //参数NaN等同于0 'na'.repeat(NaN)//'' //如果参数是字符串则会先转换成数字 'na'.repeat('na') //'' 'na'.rapeat('3')//'nanana'</code></pre> <h4>5.padStart(),padEnd()</h4> <p>字符串补全的功能 padStart()用于头部补全,padEnd()用于尾部补全。</p> <pre><code class="language-javascript">'x'.padStart(5,'ab');//'ababx' 'x'.padStart(4,'ab');//"abax" 'x'.padEnd(5,'ab');//'xabab' 'x'.padEnd(4,'ab');//'xaba'</code></pre> <p>如果原字符串的长度,等于或大于最大长度,则字符串补全不生效,返回原字符串。</p> <pre><code class="language-javascript">'xxx'.padStart(2,'ab') //'xxx' 返回原字符串 'xxx'.padEnd(2,'ab') //'xxx' 返回原字符串</code></pre> <p>如果补全的字符串和原字符串,两者的长度超出了最大长度,则截取超出位数的补全字符串</p> <pre><code class="language-javascript">'abc'.padStart(10,'0123456789') //"0123456abc" 如果省略第二个参数,默认使用空格补全长度。 'x'.padStart(4) //' x' 'x'.padEnd(4) //'x '</code></pre> <p>padStart()的常见用途是为数值补全指定位数。下面代码生成 10 位的数值字符串。</p> <pre><code class="language-javascript">'1'.padStart(10, '0') // "0000000001" '12'.padStart(10, '0') // "0000000012" '123456'.padStart(10, '0') // "0000123456"</code></pre> <p>另一个用途是提示字符串格式。</p> <pre><code class="language-javascript">'12'.padStart(10,'YYYY-MM-DD') //'YYYY-MM-12' '09-12'.padStart(10, 'YYYY-MM-DD') // "YYYY-09-12"</code></pre> <h4>6.字符串嵌入变量</h4> <pre><code class="language-javascript">// 字符串中嵌入变量 let name = "Bob", time = "today"; `Hello ${name}, how are you ${time}?`</code></pre> <p>大括号内部可以放入任意的 JavaScript 表达式,可以进行运算,以及引用对象属性。</p> <pre><code class="language-javascript">let x = 1; let y = 2; `${x} + ${y} = ${x + y}` // "1 + 2 = 3" `${x} + ${y * 2} = ${x + y * 2}` // "1 + 4 = 5" let obj = {x: 1, y: 2}; `${obj.x + obj.y}` // "3"</code></pre> <p>模板字符串之中还能调用函数。</p> <pre><code class="language-javascript">function fn() { return "Hello World"; } `foo ${fn()} bar` // foo Hello World bar</code></pre> <blockquote> <p>如果模板字符串中的变量没有声明,将报错。</p> </blockquote> <pre><code class="language-javascript">// 变量place没有声明 let msg = `Hello, ${place}`; // 报错 //由于模板字符串的大括号内部,就是执行 JavaScript 代码,因此如果大括号内部是一个字符串,将会原样输出 `Hello ${'World'}` // "Hello World" 模板字符串甚至还能嵌套。 const tmpl = addrs =&gt; ` &lt;table&gt; ${addrs.map(addr =&gt; ` &lt;tr&gt;&lt;td&gt;${addr.first}&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;${addr.last}&lt;/td&gt;&lt;/tr&gt; `).join('')} &lt;/table&gt; `; </code></pre>

页面列表

ITEM_HTML