1.将url解析为对象
let url = "http://www.baidu.com?userName=join&age=24&city=%E5%8C%97%E4%BA%AC&score=66&score=99"
function changeUrlObject(url) {
let obj = {}
let str = url.slice(url.indexOf('?') + 1)
let arr = str.split('&')
arr.forEach((item, index) => {
let [key, value] = item.split('=')
value = decodeURIComponent(value);
value = /^\d+$/.test(value) ? parseFloat(value) : value;
if (!obj.hasOwnProperty(key)) {
obj[key] = value
} else {
obj[key] = [].concat(obj[key], value)
}
})
return obj
}
console.log(changeUrlObject(url))
2.模板引擎实现
let sourceData = {
'userName': '张三',
'age': '20',
'type': '大学',
'content': { 'price': '302510', 'date': '20200317', 'time': '191800' }
}
let resultData = [ { 'res': "date;time;姓名:indexName;年龄:age;学历:type;工资:price;" } ]
let res = resultData[0].res
let content = sourceData.content
const reg = new RegExp(/\w+/g)
const str = res.match(reg)
for (let i = 0; i < str.length; i++) {
for (key in sourceData) {
if (key === str[i]) {
res = res.replace(str[i], sourceData[key])
}
}
for (key in content) {
if (key === str[i]) {
res = res.replace(str[i], content[key])
}
}
}
console.log(res) //20200317;191800;姓名:张三;年龄:20;学历:大学;工资:302510;
3.转化为驼峰命名
let str = 'hello-world-shy';
function changeCase(str) {
return str.replace(/\-\w/g, (params) => {
return params.slice(1).toUpperCase()
})
}
console.log(changeCase(str))
4.驼峰命名转换为带'-'格式
let str = 'helloWorldShy';
function changeCase(str) {
return str.replace(/[A-Z]/g, (params) => {
return `-${params.toLowerCase()}`
})
}
console.log(changeCase(str))
5.查找字符串中出现最多的字符和个数
let str = 'xbuhfsdfoasfabdfsiatabzdhr'
function getMoreStr(str) {
let num = 0
let chart = ''
let sortStr = str.split('').sort().join('') //先把数据变成数组,在按照ASCII排序,在转成字符串
let re = /(\w)\1+/g
sortStr.replace(re, ($0, $1) => {
console.log($0,$1)
if (num < $0.length) { //某个字符串出现次数最多
num = $0.length
chart = $1
}else if (num === $0.length) { //两个字符串出现最多次数相同时
num = $0.length
chart = [].concat(chart,$1).join(',')
}
})
return {chart,num}
}
console.log(getMoreStr(str)) //{'a,f',4}
6.每一个字符串出现的次数
let str = 'xbuhfsdfoasfabdfsiatabzdhr';
function changeChartNum(str) {
let sortArr = str.split('').sort()
let obj = sortArr.reduce((params, key) => {
if (params[key] === undefined) {
params[key] = 1
} else {
key = params[key]++
}
return params
}, {})
}
console.log(changeChartNum(str))
7.字符串查找(A字符串在B字符串中的位置)
let strA = 'world'
let strB = 'hello world'
function stringIndex(a, b) {
for (let i in b) {
if (a[0] === b[i]) {
let flag = true
for (let j in a) {
if (a[j] !== b[Number(i)+Number(j)]) {
flag = false
}
}
if (flag) {
return i
}
}
}
return -1
}
console.log(stringIndex(strA, strB)) //6
8.实现千位分隔符(及小数位数)
let str = '1234567.1'
let str2 = '1234567'
let str3 = '1234567.890'
function toMoney(num, len) {
if (typeof num != 'number') {
num = Number(num)
}
console.log(typeof num)
num = parseFloat(num.toFixed(len))
let [integer, decimal] = String.prototype.split.call(num, '.')
integer = integer.replace(/\d(?=(\d{3})+$)/g, '$&,');
return integer + '.' + (decimal ? len > decimal?.length ? decimal + Array(len + 1 - decimal.length).join(0) : decimal : Array(len + 1).join(0));
}
console.log(toMoney(str, 2))
console.log(toMoney(str2, 2))
console.log(toMoney(str3, 2))
9.去掉字符串中的空白符
let str = ' hello world ';
去除所有空格:
console.log(str.replace(/\s+/g, ""))
去除两头空格:
console.log(str.replace(/^\s+|\s+$/g, ""))
去除左空格:
console.log(str.replace(/^\s*/, ''))
去除右空格:
console.log(str.replace(/(\s*$)/g, ""))
题干参考:www.cnblogs.com/duxinyi/p/1…