javascript中string字符串知识点整理

字符串转换

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;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值