论坛首页 Web前端技术论坛

写一个字符串转成驼峰的方法

浏览 7993 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2014-03-21  

今天看到一个这样的基础js面题。就是让写一个字符串转成驼峰的方法:

如:border-bottom-color  》  borderBottomColor

想想应该有两种方法:

1,用传统的字符串操作。

2,用正则表达式的方法。

首先我们看看第一种的实现原理:我们要把-b和-c转成大写的B和C。那么我们可以用split()方法来进行分割

利用toUpperCase()方法来转大写。最后用join()方法来拼接。

OK

 

var str = "border-bottom-color";

function test(str){
	var arr = str.split("-");//用split()函数来进行分割字符串arr里面包括【border,bottom,color】
	for(var i=1;i<arr.length;i++){//从数组的第二项开始循环,charAt(0)找到第一个字母。substring(1)截掉第一个字母。
		arr[i] = arr[i].charAt(0).toUpperCase() + arr[i].substring(1);//循环之后把得到的字符赋给arr。【border,Bottom, Color】
		alert(arr[i]);
	}
	return arr.join("");//用join方法来拼接,空拼接。就变成borderBottomColor

}
alert(test(str));

 

 

很好理解

然后我们用正则表达式来完成转换。如果了解正则的人会觉得很容易的。

 

var str = "border-bottom-color";
function test(str){
	var re = /-(\w)/g;//通过正则找到-b  -c。默认的是匹配一次,所以要用g来全局匹配。\w指的字符。找一个-找一个字符。replace替换就是B替换-b   C替换-c。 $0代表正则,$1代表指向
	return str.replace(re, function($0,$1){
		return $1.toUpperCase();
	});
}
alert(test(str));

 

 

   发表时间:2014-03-28   最后修改:2014-03-28
jQuery里面jQuery.camelCase(string)是这样写的
var rdashAlpha=/-([a-z]|[0-9])/ig,
    fcamelCase=function( all, letter ) {
        return ( letter + "" ).toUpperCase();
    };
camelCase: function( string ){
    return string.replace(rdashAlpha, fcamelCase);
}
0 请登录后投票
   发表时间:2014-03-28  
mfkvfn 写道
jQuery里面jQuery.camelCase(string)是这样写的
var rdashAlpha=/-([a-z]|[0-9])/ig,
    fcamelCase=function( all, letter ) {
        return ( letter + "" ).toUpperCase();
    };
camelCase: function( string ){
    return string.replace(rdashAlpha, fcamelCase);
}

谢谢多一种实现方式
0 请登录后投票
   发表时间:2014-03-28  
xiaomiya 写道
mfkvfn 写道
jQuery里面jQuery.camelCase(string)是这样写的
var rdashAlpha=/-([a-z]|[0-9])/ig,
    fcamelCase=function( all, letter ) {
        return ( letter + "" ).toUpperCase();
    };
camelCase: function( string ){
    return string.replace(rdashAlpha, fcamelCase);
}

谢谢多一种实现方式

不是一样的么
0 请登录后投票
   发表时间:2014-03-28  
rex0654335 写道
xiaomiya 写道
mfkvfn 写道
jQuery里面jQuery.camelCase(string)是这样写的
var rdashAlpha=/-([a-z]|[0-9])/ig,
    fcamelCase=function( all, letter ) {
        return ( letter + "" ).toUpperCase();
    };
camelCase: function( string ){
    return string.replace(rdashAlpha, fcamelCase);
}

谢谢多一种实现方式

不是一样的么

应该是的呀
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics