[ES6] string 拓展

ES6 方法拓展

是否包含子串

ES6 之前判断字符串是否包含子串,用 indexOf 方法,ES6 新增了子串的识别方法

方法描述返回数据类型
includes()判断是否找到参数字符串返回布尔值
startsWith()判断参数字符串是否在原字符串的头部返回布尔值
endsWith()判断参数字符串是否在原字符串的尾部返回布尔值

以上方法均有两个参数 (str,idx?),str 需要搜索的字符串,idx 可选的搜索起始位置索引

以上方法只返回布尔值,如果需要知道子串的位置,还得用 indexOf 和 lastIndexOf

以上方法如果传入了正则表达式而不是字符串,会抛出错误。而 indexOf 和 lastIndexOf 则会将正则表达式转换为字符串并搜索它

let string = "apple,banana,orange";
string.includes("banana"); // true
string.startsWith("apple"); // true
string.endsWith("apple"); // false
string.startsWith("banana", 6); // true

字符串重复

方法描述返回数据类型
repeat()返回新的字符串,表示将字符串重复指定次数返回返回 string
  • repeat(number):返回新的字符串,表示将字符串重复指定次数返回
    • number 如果是小数,则向下取整
    • -1<number<0 ,则 number=0,返回 “”
    • number=NaN ,则 number=0,返回 “”
    • number 是负数 或者 number=Infinity,则 报错 请输入有效数据
    • number 如果是字符串则会返回对应的数字
console.log("Hello,".repeat("hh")); // ""
console.log("Hello,".repeat("2")); // "Hello,Hello,"

字符串补全

  • padStart(length,str?):返回新字符串,表示从头部(左侧)开始用指定字符串补全原字符串
  • padEnd(length,str?):返回新字符串,表示从尾部(右侧)补全原字符串

str 是用来补全的字符串。如果没有指定 str,默认用空格填充;
length 是指定生成的字符串的最小长度;
如果 length <= 原字符串的长度,则返回原字符串;
如果 length <原字符串长度+补全字符串长度,则截去超出位数的补全字符串;

console.log("h".padStart(5, "o")); // "ooooh"
console.log("h".padEnd(5, "o")); // "hoooo"
console.log("h".padStart(5)); // " h"
console.log("computer".padStart(5, "A")); // "computer"
console.log("computer".padStart(10, "beautiful")); //becomputer

字符串

普通字符串

双引号

const str1="111"

单引号

const str2='111'

模板字符串

模板字符串相当于加强版的普通字符串,使用用反引号 `标记字符串,除了作为普通字符串,还可以用来定义多行字符串,可以在字符串中加入变量和表达式

插入变量和表达式

${}可以放入动态变量,也可以写入表达式

const tempStr = `<div>${Math.random()}</dv>`;

设置输出格式

模板字符串可以任意设置反引号`符号中的格式,输出内容为反引号中定义格式,以方便阅读,例如:

const tempStr = `
hello,
<div>${Math.random()}</dv>
`;

模板字符串中的换行和空格都是会被保留的

标签模板

标签模板,是函数的调用,可以使用方法名直接拼接模板字符串,则模板字符串自动转化为数组;

alert`Hello world!`;
// 等价于
alert("Hello world!");

如果模板字符串中存在变量或表达式,则多个变量自动作为参数追加到方法上

function template(stringArr, ...values) {
  let result = "";
  for (let i = 0; i < stringArr.length; i++) {
    result += stringArr[i];
    if (values[i]) {
      result += values[i];
    }
  }
  console.log(result);
  return result;
}
let name = "Mike";
let age = 27;
template`Name is ${name},I am ${age + 1} years old.`;
//stringArr=[ 'Name is ', ',I am ', ' years old.' ]
// return "Name is Mike,I am 28 years old."

// 等价于
template(["Name is", ",I am ", " years old."], "Mike", 28);

template`Name is,I am years old.`;
//stringArr=[ 'Name is,I am years old.' ]

模板字符串的长度不同于普通字符串长度

如果模板字符串仅是反引号标记的普通字符串,则作为参数传入后被转化为数组,长度为 1

如果模板字符串中存在变量和表达式,则作为参数传入后转化为被 ${}分割后的数组,长度也即转化后数组的长度,例如上述存在两个${},所以长度为 3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三知之灵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值