字符串
1、字符串拼接
var name = '我';
var lang = '真开心';
console.log(`${name}今天${lang}`);//我今天真开心
2、逻辑运算
var a = 1;
var b = 2;
console.log(`a + b 的和是: ${a + b}`); // a + b 的和是: 3
var age = 16;
console.log(`小明是${age > 18 ? '成年人' : '未成年人'}`)
// 小明是未成年人
3、字符串遍历
var str = '哈喽🤪';
for (let item of str) {
console.log(item);
}
// 哈
// 喽
// 🤪
4、查找一个字符串是否包含另一个字符串(区分大小写)
var str = 'hello world';
console.log(str.includes('hello')); // true
//从第三个位置查(空格算一个位)
console.log(str.includes('hello', 3)); // false
//当第二个参数是负数时,只要查找的字符串在目标字符串里,无论是多少,都会返回 true。
//如果没有传入值,则默认为undefined
'undefined'.includes(''); // 返回 true(传入空字符串)
'undefined'.includes(); // 返回 true
'undefine'.includes(); // 返回 false
'ABC'.includes(); // 返回 false
//会进行类型转换
let numStr = '2020';
numStr.includes('2'); // true
numStr.includes(2); // true
//不能对number类型进行判断
let numStr = 2020;
numStr.includes(2); // Uncaught TypeError: numStr.includes is not a function
//解决方法
let numStr = 2020;
("" + numStr).includes(0) // true
5、startsWith()和endsWith()
//startsWith()用于判断一个字符串,是否以一个指定字符串为起始的。
//endsWith()用来判断当前字符串是否是以另外一个给定的子字符串为结尾。
//startsWith()
const str1 = 'I love China.';
console.log(str1.startsWith('I')); // true
//从第三个为开头查找
console.log(str1.startsWith('I', 3)); // false
//endsWith()
const str1 = 'Cats are the best!';
//在给定的字符串从左到右一个长度17个字符串进行判断,默认是str.length
console.log(str1.endsWith('best', 17)); // true
const str2 = 'Is this a question';
console.log(str2.endsWith('?')); // false
//当传入的参数为空时,默认为undefined(不是字符串的undefined)
//以下两条程序是等价的
var str = "I love China.";
console.log(str.endsWith()); // false
console.log(str.endsWith(undefined)); // false
6、repeat()
//对该字符串进行重复操作,但不会改变原字符串。
let str='china'
console.log(str.repeat(2)) // 字符串重复两次 chinachina
console.log(str) //china
console.log(str.repeat(2.7))//向下取整2, chinachina
/*
* 注意
* 如果参数为负数或Infinity,且长度大于最长的字符串,会报错
* 如果参数在0 到 - 1 或 0 到 1 都会先进行取整运算,所以在这两个范围内都会被 视同为 0。
* 如果参数 NaN 等同于 0
* 如果 参数是字符串,则会先转换成数字。
*/
7、padStart()
//padStart()是字符串补全长度(左侧开始位置)
//(1)拼接字符串(目标最大长度为10)
"china".padStart(10, 'ilove') // "ilovechina"
//(2)如果原字符串的长度,等于或小于最大长度,则字符串补全不生效,返回原字符串。
'china'.padStart(5, 'ab') // 'china'
'china'.padEnd(2, 'ab') // 'china'
//(3)如果补全的字符串和原字符串的长度大于目标的长度,补全的字符串会被截取。
'china'.padStart(7, 'abc') // 'abchina'
//(4)如果补全的字符串和原字符串的长度小于目标的长度,补全的字符串会被重复,多余的部分会被裁剪。
'china'.padStart(9, 'ab') // 'ababchina'
'china'.padStart(10, 'ab') // 'ababachina'
//(5)如果省略第二个参数,默认使用空格补全长度。
'china'.padStart('7') // ' china'
//应用场景(补全日期)
var month = String(new Date().getMonth() + 1).padStart(2, '0'); // 09
var date = String(new Date().getDate()).padStart(2, '0'); // 15
8、padEnd()
//padEnd()是字符串补全长度(右侧开始位置)
//(1)拼接字符串(目标最大长度为10)
"china".padEnd(10, 'ilove') // "chinailove"
//(2)如果原字符串的长度,等于或小于最大长度,则字符串补全不生效,返回原字符串。
'china'.padEnd(5, 'ab') // 'china'
'china'.padEnd(2, 'ab') // 'china'
//(3)如果补全的字符串和原字符串的长度大于目标的长度,补全的字符串会被截取。
'china'.padEnd(7, 'abc') // 'chinaab'
//(4)如果补全的字符串和原字符串的长度小于目标的长度,补全的字符串会被重复,多余的部分会被裁剪。
'china'.padEnd(9, 'ab') // 'chinaabab'
'china'.padEnd(10, 'ab') // 'chinaababa'
//(5)如果省略第二个参数,默认使用空格补全长度。
'china'.padEnd('7') // 'china '
//应用场景(补全时间戳的毫秒)
let timestamp = 1581828518
timestamp = String(timestamp).padEnd(13, '0'); // 1581828518000
9、trim()
//从一个字符串的两端删除空白字符。
var str = ' china ';
console.log(str.trim()); // 'china'
const str = ' china ';
str.trim() // "china"
str.trimStart() // "china "
str.trimEnd() // " china"