字符串转换
toString() String() ‘’ + JSON.stringify
都不会改变原变量
let num = 520;
let stringNum;
stringNum = num.toString();
stringNum = String(num);
stringNum = '' + num;
stringNum = JSON.stringify(num);
console.log(typeof num, typeof stringNum)
字符串分割
split() 将字符串根据一定规则进行拆分生成数组
第一个参数是拆分规则
第二个参数为数组的最大长度
let splitString = 'qwe-asd-zxc';
let splitArray = splitString.split('-');
console.log('splitArray', splitArray);
let splitMaxArray = splitString.split('', 5); //第一个参数为空则代表每一个字符都会被拆分,第二个为数组最大长度为5
console.log(splitMaxArray);
字符串替换
原字符串不会发生变化,返回被替换的字符串
replace 默认只替换第一个 replaceAll 替换全部
第一个参数为被替换的字符 可以是正则 也可以是字符串
第二个参数为替换的字符
let replaceString = 'hello,world';
let afterReplaceString = replaceString.replace('l', 'a');
console.log('afterReplaceString', afterReplaceString);
获取字符串长度
.length
let stringLenghth = 'stringLenghth';
console.log('stringLenghth.length', stringLenghth.length);
查询子字符串
indexOf lastIndexOf 对大小写敏感
indexOf 从左向右查,第一次出现的下标
lastIndexOf 从右向左查,第一次出现的下标
let indexOfString = 'hello,world';
let indexOfNumber = indexOfString.indexOf('l');
console.log('indexOfNumber', indexOfNumber);
let lastIndexOfNumber = indexOfString.lastIndexOf('l');
console.log('lastIndexOfNumber', lastIndexOfNumber);
字符串连接
可以使用加法操作,也可以使用concat
let mystr1 = 'hello';
let mystr2 = 'world';
let newstr = mystr1 + mystr2;
console.log(newstr);
//concat
newstr = mystr1.concat(mystr2);
console.log(newstr);
字符串切割和提取
第二个参数都是可选,如果不写会自动截到最后
第一种 slice
接收两个参数,参数可以为负数,第一参数为开始的下标且必须,第二个参数为结束的下标 包含第一个下标不包含第二个下标
为负数的话加上字符串的长度就是下标
返回新的字符串, 不影响原字符串
let sliceString = 'hello,world';
let newSliceString = sliceString.slice(-4, -1);
console.log('newSliceString', newSliceString, sliceString)
第二种 substring
接受两个参数,参数不能为负数,第一参数为开始的下标且必须,第二个参数为结束的下标 包含第一个下标不包含第二个下标
返回新字符串,不影响原字符串
let substring = 'hello,world';
let newSubstringString = substring.substring(2, 7);
console.log('newSubstringString', newSubstringString)
第三种 substr
接收两个参数, 第一个参数可以为负数,为负数的话加上字符串的长度就是下标 ,第二个参数为截取字符串的长度
返回新字符串,不影响原字符串
let substrString = 'hello,world';
let newSubstrString = substrString.substr(2, 7);
console.log('newSubstrString', newSubstrString)
es6新增操作
``
let [name, height] = ['张三', '1.8']
function tagFn(arr, v1, v2) {
console.log(arr, v1, v2)
}
tagFn `他叫${name},身高${height}m`
repaeat
将目标字符串重复,返回一个新的字符串,不影响目标字符串
let beforeRepeatString = '张三';
let afterRepeatString = beforeRepeatString.repeat(2);
console.log(afterRepeatString); //张三张三
includes
判断字符串中是否含有指定的字符串返回true或false
第一个参数为指定的字符串
第二个参数选填,表示开始搜索的位置
let includesString = 'asdfghjklq';
console.log(includesString.includes('asdf', 0)) //true
startWidth
判断指定的字符是否出现在目标字符串的开始位置
第一个参数为指定的字符串
第二个参数选填,表示开始搜索的位置
let startWidthName = '张三李四';
console.log(startWidthName.startsWith('张')) //true
console.log(startWidthName.startsWith('三')) //false
console.log(startWidthName.startsWith('三', 1)) //true
endWidth
判断指定的字符是否出现在目标字符串的尾部
第一个参数为指定的字符串,第二个参数选填,表示针对前n个字符
let endWidthName = '张三李四';
console.log(startWidthName.endsWith('四')) //true
console.log(startWidthName.endsWith('李')) //false
console.log(startWidthName.endsWith('三', 1)) //true
raw
返回字符串最初的
console.log(String.raw `hello\nwolrd`); //不会换行
字符串去重
let str = 'aahhgggsssjjj';
function removeRepeat(str) {
let res = [];
let strList = str.split('');
strList.forEach(value => {
let status = res.some(resValue => {
return resValue === value;
})
if (!status) {
res.push(value);
}
})
return res.join('');
}
let afterRemoveRepeatString = removeRepeat(str);
console.log('afterRemoveRepeatString', afterRemoveRepeatString)
判断字符在字符串中出现的次数
let repeatList = str.split('');
let afterRemoveRepeatList = afterRemoveRepeatString.split('');
let list = [];
afterRemoveRepeatList.forEach(value => {
let obj = {
title: value,
count: 0
}
repeatList.forEach(childValue => {
if (childValue === value) {
obj.count++;
}
})
list.push(obj);
})
console.log(list)
map写法
function findTimeTest(input) {
let dataMap = new Map();
input.split('').forEach(data => {
if (dataMap.has(data)) {
dataMap.set(data, dataMap.get(data) + 1)
} else {
dataMap.set(data, 1)
}
})
return dataMap;
}