首页 > 试题广场 >

将字符串转换为驼峰格式

[编程题]将字符串转换为驼峰格式
  • 热度指数:42847 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
css 中经常有类似 background-image 这种通过 - 连接的字符,通过 javascript 设置样式的时候需要将这种样式转换成 backgroundImage 驼峰格式,请完成此转换功能
1. 以 - 为分隔符,将第二个起的非空单词首字母转为大写
2. -webkit-border-image 转换后的结果为 webkitBorderImage
示例1

输入

'font-size'

输出

fontSize
function cssStyle2DomStyle(sName) {
    let wordArr = sName.split("-").filter((val) => val!="");
    // 得到非空单词数组
    for (let i = 1; i < wordArr.length; i++) {
        // 从第二个非空单词起
        let letterArr = wordArr[i].split("");
        // 得到每个单词的字母数组
        letterArr[0] = letterArr[0].toUpperCase();
        // 首字母大写
        wordArr[i] = letterArr.join("");
        // 重组单词
    }
    // 重组字符串并返回
    return wordArr.join("");
}

发表于 2021-08-12 17:01:31 回复(0)
function cssStyle2DomStyle(sName) {
    let check = /-*\w+/g;
    let data = sName.match(check);

    //判断第一个字符是否为-
    if(data[0][0] == '-'){
        data = toUP(data,1);
    }else{
        data = toUP(data,0);
    }
    data = data.join("")
    return data.replace(/-/g,"");
}
function toUP(data,k){
    for (let i in data){
        data[i]= i ==0?data[i].replace(data[i][k],data[i][k].toLowerCase()):data[i].replace(data[i][1],data[i][1].toUpperCase());
    }
    return data;
}


function cssStyle2DomStyle(sName){
    return sName.replace(/-([a-z])/g,function(str,p2,index){
        return index>2 ? p2.toUpperCase() : p2;
    })
}


编辑于 2020-10-19 15:29:15 回复(0)
function cssStyle2DomStyle(sName) {
    var temp = [];
    for(var i=0;i<sName.length;i++){
        if(sName[i]!=="-"){
            temp.push(sName[i]);
        }
        else if (i===0){}
        else{
            i++;
            temp.push(sName[i].toUpperCase());
        }
    }
    return temp.join("");
}

发表于 2020-06-10 10:00:30 回复(1)
function cssStyle2DomStyle(sName) {
    return sName.replace(/-([a-z])/g, (str, letter, index) => {
        return index ? letter.toUpperCase() : letter;
    });
}

发表于 2020-04-28 22:49:06 回复(0)
/**
 * css 中经常有类似 background-image 这种通过 - 连接的字符,通过 javascript 设置样式的时候需要将这种样式转换成 backgroundImage 驼峰格式,请完成此转换功能
    1. 以 - 为分隔符,将第二个起的非空单词首字母转为大写
    2. -webkit-border-image 转换后的结果为 webkitBorderImage
 * @param {String} sName 
 */
function cssStyle2DomStyle(sName) {
    // 排除空字符串的情况
    if(!sName) return '';
    // 去除开头第一个-
    if(sName[0] == '-') {
        sName = sName.slice(1);
    }
    // 复制进入一个新字符串
    let res = ''
    for(let i = 0 , len = sName.length ; i < len ; i ++) {
        if(sName[i] == '-') {
            res += sName[++ i].toUpperCase();
        }
        else {
            res += sName[i];
        }
    }
    return res;
}

发表于 2019-10-22 11:12:27 回复(0)
function cssStyle2DomStyle(sName) {
    // 判断第一个字符是否为'-',如果是就取后面的,不是就直接使用原值
    sName = sName[0] === '-' ? sName.slice(1) : sName;
    var item = sName.split('-');
    for(var i=1,len=item.length;i<len;i++){
        item[i] = item[i][0].toUpperCase() + item[i].slice(1);
    }
    return item.join('');
}

发表于 2019-02-13 17:14:36 回复(0)
function cssStyle2DomStyle(sName) {
    // 第一步去掉首个中划线-
    // 第二步以 \-\w 作为分组, 全局匹配替换
    return sName.replace(/^\-/, '').replace(/(\-\w)/g, function(a, n) {
        return a[1].toUpperCase();
    });
}

发表于 2018-07-18 16:34:25 回复(0)
function cssStyle2DomStyle(sName) {
return sName.match(/[^\-$]+/g).map(function(cur, i) {
if(!i) return cur;
return cur[0].toUpperCase() + cur.substring(1);
}).join('');
}

四行就解决了,哪有那么麻烦,根本就不用管  '-'
编辑于 2018-05-03 14:31:53 回复(0)
提供一种非正则的方法
function cssStyle2DomStyle(sName) {
    var arr = sName.split('-')
    var inde = sName.indexOf('-')
    if(inde == 0) {
        inde = 2
    } else {
        inde = 1
    }
    for(var i = inde ; i < arr.length ; i++ ) {
        var tempArr = arr[i].split('')
        tempArr[0] = tempArr[0].toLocaleUpperCase()
        arr[i] = tempArr.join('')
    }
    var nName = arr.join('')
    
    return nName
}

发表于 2018-02-22 14:36:19 回复(0)
// 装个逼,two lines solution
function cssStyle2DomStyle(sName) {
    var arr = sName.match(/\w+/g)
    return arr.slice(1).reduce(function (res, item) { return res + item.substring(0, 1).toUpperCase() + item.substring(1) }, arr[0])
}

发表于 2017-08-29 22:16:03 回复(0)
//利用正则表达式
function cssStyle2DomStyle(sName) {
        if(sName[0] === '-'){
            sName = sName.replace('-','');
        }

        var re = /-([a-z])/g;
        sName = sName.replace(re, function (a, b) {
            return b.toUpperCase();
        });

        return sName;
    }
    console.log(cssStyle2DomStyle('-webkit-border-image '));
//利用了数组,比较笨的方法....
function cssStyle2DomStyle(sName) {
        var arr = sName.split('-');
        var len = arr.length;
        var result;
        var brr;
        if(arr[0] === ''){ //第一个为"",从第二个开始
            result = arr[1];
            for(var i = 2; i < len; i++){
                brr = arr[i].split('');
                brr[0] = brr[0].toUpperCase();
                result += brr.join('')
            }
        }else{
            result = arr[0];
            for(var j = 1; j < len; j++){
                brr = arr[j].split('');
                brr[0] = brr[0].toUpperCase();
                result += brr.join('')
            }
        }
        return result;
    }
    console.log(cssStyle2DomStyle('-webkit-border-image ')); 

编辑于 2017-02-21 20:25:39 回复(0)
function cssStyle2DomStyle(sName) {
	return sName.replace(/-([a-z])/g,function(full, letter, index){
        return index > 0 ? letter.toUpperCase() : letter;
    });
}

发表于 2016-10-18 11:55:58 回复(0)

 function cssStyle2DomStyle(sName) {
    re = /-(\w)(\w+)/g;
    if(sName[0]=='-'){sName=sName.replace('-','');}
    sName=sName.replace(re,function(a,b,c){
        return b.toUpperCase()+c.toLowerCase();
    });
    return sName;
}
发表于 2016-10-12 18:57:46 回复(0)
function cssStyle2DomStyle(sName) {
  return sName.replace(/-?(\w+)-(\w+)-?(\w+)?/g,function (a,s1,s2,s3) {
    s3=s3 || "";
    return s1+s2.substring(0,1).toUpperCase()+s2.substring(1)+s3.substring(0,1).toUpperCase()+s3.substring(1);
  });
}
发表于 2016-08-08 22:40:15 回复(0)
function cssStyle2DomStyle(sName) {
    var retValue = "";
    sName.replace(/-?(\w+)-?/g,function(a,v,i){
        if(i == 0){
            retValue += v;
            return;
        }
        retValue += v.substring(0,1).toUpperCase() + v.substring(1);
    });
    return retValue;
}

发表于 2015-11-21 16:56:24 回复(0)
function cssStyle2DomStyle(sName) {
    return sName
    .replace(/^\-/g, '') // 1. 如果第一位出现'-'的情况,删除'-'
    .replace(/\-\w/g, (str) =>{ // 2. 匹配 '-'和后面的一个字母
        return str[1].toUpperCase(); // 3. 替换,'-a' 成 'A'
    })
}

编辑于 2020-12-30 11:45:30 回复(0)
function cssStyle2DomStyle(sName) {
    var arr=sName.split('-');
    for(var i=0;i<arr.length;i++){
        if(arr[i]==""){
            arr.splice(i,1);
            i--;
        }else{
            if(i>=1){
                arr[i]=arr[i].match(/\b\w+\b/)[0].replace(/\w+/,function(word){
                 returnword.substr(0,1).toUpperCase()+word.substr(1);
} );
            } 
        }        
    }
    returnarr.join("");
}

发表于 2015-09-04 02:26:36 回复(0)
return sName.replace(/\-[a-z]/g , function(a, b){
    return b == 0 ? a.replace('-','') : a.replace('-','').toUpperCase();
});

编辑于 2015-12-27 21:56:29 回复(16)
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('');
}

发表于 2016-08-19 17:23:20 回复(12)
function cssStyle2DomStyle(sName) {
	return sName.replace(/(?!^)\-(\w)(\w+)/g, function(a, b, c){
            return b.toUpperCase() + c.toLowerCase();
        }).replace(/^\-/, '');
}

发表于 2015-09-29 22:36:14 回复(17)