题目来源
获取字符串的长度
题目描述
如果第二个参数 bUnicode255For1 === true,则所有字符长度为 1
否则如果字符 Unicode 编码 > 255 则长度为 2
输入
'hello world, 牛客', false
输出
17
参考代码
function strLength(s, bUnicode255For1) {
let len =0
if(bUnicode255For1 === true) {
return s.length
} else {
for (let i=0; i < s.length; i++) {
if(s.charCodeAt(i)>255) {
len += 2
} else {
len += 1
}
}
return len
}
}
颜色字符串转换
题目描述
将 rgb 颜色字符串转换为十六进制的形式,如 rgb(255, 255, 255) 转为 #ffffff
- rgb 中每个 , 后面的空格数量不固定
- 十六进制表达式使用六位小写字母
- 如果输入不符合 rgb 格式,返回原始输入
输入
'rgb(255, 255, 255)'
输出
#ffffff
参考代码
function rgb2hex(sRGB) {
let reg = /rgb|\(|\)|\s/g
let colorArr = sRGB.replace(reg,'').split(',')
let isColor = colorArr.every(item => (item <= 255 && /\d/.test(item)))
if(isColor) {
let result = '#'
colorArr.forEach(element => {
hex = parseInt(element)<16?'0'+parseInt(element).toString(16):parseInt(element).toString(16)
//console.log(parseInt(element).toString(16))
result += hex
});
return result
} else {
return sRGB
}
}
将字符串转换为驼峰格式
题目描述
css 中经常有类似 background-image 这种通过 - 连接的字符,通过 javascript 设置样式的时候需要将这种样式转换成 backgroundImage 驼峰格式,请完成此转换功能
- 以 - 为分隔符,将第二个起的非空单词首字母转为大写
- -webkit-border-image 转换后的结果为 webkitBorderImage
输入
'font-size'
输出
fontSize
参考代码
function cssStyle2DomStyle(sName) {
if(sName[0]=='-'){
sName.replace('-','')
}
let reg =/-./g
return sName.replace(reg,function (a,b){
return a[1].toUpperCase()
})
}
function cssStyle2DomStyle(sName) {
var arr = sName.split('');
//判断第一个是不是 '-',是的话就删除
if(arr.indexOf('-') == 0)
arr.splice(0,1);
//处理剩余的'-'
for(var i=0; i<arr.length; i++){
if(arr[i] == '-'){
arr.splice(i,1);
arr[i] = arr[i].toUpperCase();
}
}
return arr.join('');
}
字符串统计
题目描述
统计字符串中每个字符的出现频率,返回一个 Object,key 为统计字符,value 为出现频率
- 不限制 key 的顺序
- 输入的字符串参数不会为空
- 忽略空白字符
输入
'hello world'
输出
{h: 1, e: 1, l: 3, o: 2, w: 1, r: 1, d: 1}
参考代码
function count(str) {
let map = new Map()
let res = new Object()
str = str.replace(/\s/,'')
for(let i = 0; i < str.length; i++) {
if(map.has(str[i])) {
map.set(str[i],map.get(str[i])+1)
} else {
map.set(str[i],1)
}
}
map.forEach((value,key) => {
res[key] = value
})
return res
}