资讯专栏INFORMATION COLUMN

字符串的扩展

opengps / 1153人阅读

摘要:字符串的扩展字符的表示法参数与数组字符串的遍历使用循环遍历传统的字符串只有方法,可以用来确定一个字符串是否包含在另一个字符串中。返回布尔值,表示参数字符串是否在原字符串的头部。

字符串的扩展 1.字符的 Unicode 表示法 rest参数与数组
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
2.字符串的遍历

使用for...of循环遍历

for(let item of "foo"){
console.log(item); //"f" "o" "o"
}
3.includes(),startsWith(),endsWith()

传统的字符串只有indexOf方法,可以用来确定一个字符串是否包含在另一个字符串中。ES6又提供了三种新方法。

 - includes():返回布尔值,表示是否找到了参数字符串。
 - StartsWith():返回布尔值,表示参数字符串是否在原字符串的头部。
 - endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部。
let s = "Hello world!"
s.startsWith("Hello") //true
s.endsWith("!") //true
s.includes("o") //true

这三种方法都支持第二个参数,表示开始搜索的位置。

let s = "Hello world!";
s.startsWith("world",6)//true
s.endsWith("Hello",5)//true 前5个字符串
s.includes("Hello",6)//false
//上面代码表示,使用第二个参数n时,**endsWith的行为与其他两个方法有所不同。它针对前n个字符,**而其他两个方法针对从第n个位置直到字符串结束。
4.repeat()

repeat返回一个新字符串,表示将原字符串重复n次。

"x".repeat(3)//"xxx"
"hello".repeat(2)//"hellohello"
"na".rapeat(0) //""

如果参数是小数,则会取整。

"na".repeat(2.9) //"nana"

如果参数是负数或者是Infinity,会报错

"na".repeat(Infinity)
//RangError
"na".repeat(-1)//RangError

如果参数在0到-1之间则视为为0

"na".repeat(-0.9) //""
//参数NaN等同于0
"na".repeat(NaN)//""
//如果参数是字符串则会先转换成数字
"na".repeat("na") //""
"na".rapeat("3")//"nanana"
5.padStart(),padEnd()

字符串补全的功能
padStart()用于头部补全,padEnd()用于尾部补全。

"x".padStart(5,"ab");//"ababx"
"x".padStart(4,"ab");//"abax"

"x".padEnd(5,"ab");//"xabab"
"x".padEnd(4,"ab");//"xaba"

如果原字符串的长度,等于或大于最大长度,则字符串补全不生效,返回原字符串。

"xxx".padStart(2,"ab") //"xxx" 返回原字符串
"xxx".padEnd(2,"ab") //"xxx" 返回原字符串

如果补全的字符串和原字符串,两者的长度超出了最大长度,则截取超出位数的补全字符串

"abc".padStart(10,"0123456789") //"0123456abc"

如果省略第二个参数,默认使用空格补全长度。
"x".padStart(4) //"   x"
"x".padEnd(4) //"x   "

padStart()的常见用途是为数值补全指定位数。下面代码生成 10 位的数值字符串。

"1".padStart(10, "0") // "0000000001"
"12".padStart(10, "0") // "0000000012"
"123456".padStart(10, "0") // "0000123456"

另一个用途是提示字符串格式。

"12".padStart(10,"YYYY-MM-DD") //"YYYY-MM-12"
"09-12".padStart(10, "YYYY-MM-DD") // "YYYY-09-12"
6.字符串嵌入变量
// 字符串中嵌入变量
let name = "Bob", time = "today";
`Hello ${name}, how are you ${time}?`

大括号内部可以放入任意的 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"

模板字符串之中还能调用函数。

function fn() {
  return "Hello World";
}

`foo ${fn()} bar`
// foo Hello World bar
如果模板字符串中的变量没有声明,将报错。
// 变量place没有声明
let msg = `Hello, ${place}`;
// 报错

//由于模板字符串的大括号内部,就是执行 JavaScript 代码,因此如果大括号内部是一个字符串,将会原样输出
`Hello ${"World"}`
// "Hello World"

模板字符串甚至还能嵌套。
const tmpl = addrs => `
  
  ${addrs.map(addr => `
    
  `).join("")}
  
${addr.first}
${addr.last}
`;

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/53466.html

相关文章

  • es6学习笔记--符串扩展、数组扩展、对象扩展

    摘要:字符串的扩展字符串的遍历器接口字符串可以被循环遍历。即能识别编号大于查询字符串是否包含某个字符返回布尔值,表示是否找到了参数字符串。返回布尔值,表示参数字符串是否在原字符串的头部。 字符串的扩展 1.字符串的遍历器接口 字符串可以被for...of循环遍历。 与es5的比较for循环虽可以遍历字符串,但不能识别大于oxFFFF的编码; 2.位置 --> 字符/码点 根据指定位置返回对应...

    不知名网友 评论0 收藏0
  • XML 实体扩展攻击

    摘要:虽说可以通过上述方式进行防御,远程实体扩展通过使解析器发出远程请求来获得被引用实体的扩展值来进行攻击。返回结果将自行定义其他解析器必须另行请求的外部实体。 XMl Entity Expansion(攻击)某种程度上类似于 XML Entity Expansion,但是它主要试图通过消耗目标程序的服务器环境来进行DOS攻击的。这种攻击基于XML Entity Expansion实现,通过...

    TerryCai 评论0 收藏0
  • 第6章 扩展函数与属性

    摘要:项目实战教程第章扩展函数与属性在使用的时候,我们经常使用诸如等等一堆工具类,代码写起来也比较冗长。本章我们介绍的扩展函数和属性。扩展函数中提供了非常简单使用的扩展函数功能。 《Kotlin 项目实战教程》 第6章 扩展函数与属性 在使用Java的时候,我们经常使用诸如StringUtil, DateUtil等等一堆工具类,代码写起来也比较冗长。举个例子,获取一个字符串的第一个字符值、最...

    wangdai 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<