有一个内置的方式与jQuery“标题案例”一个字符串?所以考虑到像鲍勃史密斯这样的东西,它变成了“鲍勃史密斯”?
答案 0 :(得分:61)
你不需要jQuery;它可以使用原生.replace()
方法完成:
function toTitleCase(str) {
return str.replace(/(?:^|\s)\w/g, function(match) {
return match.toUpperCase();
});
}
alert(toTitleCase("foo bar baz")); // alerts "Foo Bar Baz"
答案 1 :(得分:46)
答案 2 :(得分:19)
在jQuery 1.4+(至少)中,您可以使用
var camelized = jQuery.camelCase("some-string");
// Returns "someString"
我上次检查文档时找不到它,但它在那里并在内部使用。
答案 3 :(得分:5)
如果你想要打击世界上那些全部类型的可怕人物,并同时标题,你可以在这里使用这个变体:
function toTitleCase(str) {
var lcStr = str.toLowerCase();
return lcStr.replace(/(?:^|\s)\w/g, function(match) {
return match.toUpperCase();
});
}
alert(toTitleCase("FOO BAR baz")); // alerts "Foo Bar Baz"
答案 4 :(得分:4)
jQuery没有内置任何功能,但你可以查看这个有基本代码示例的网站:
String.prototype.toCamel = function(){
return this.replace(/(\-[a-z])/g, function($1){return $1.toUpperCase().replace('-','');});
};
从那里你可以像这样调用代码:
var str = "my string to camel case";
str = str.toCamel();
if ( typeof console !== 'undefined' ) console.log(str);
答案 5 :(得分:4)
更简单......
您必须在替换中使用回调。
toCamelCase = function(str){
return str.replace(/-\w/g,function(match){return match[1].toUpperCase()})
}
// this works for css properties with "-"
// -webkit-user-select => WebkitUserSelect
您可以将RegExp更改为/ [ - \ s] \ w / g或/(^ | [ - \ s])\ w / g或其他...
答案 6 :(得分:2)
我知道这个问题有点旧,但
这是我的camelCase函数版本:
var camelCase = (function () {
var DEFAULT_REGEX = /[-_]+(.)?/g;
function toUpper(match, group1) {
return group1 ? group1.toUpperCase() : '';
}
return function (str, delimiters) {
return str.replace(delimiters ? new RegExp('[' + delimiters + ']+(.)?', 'g') : DEFAULT_REGEX, toUpper);
};
})();
它处理以下所有边缘情况:
以下是实时测试的链接:http://jsfiddle.net/avKzf/2/
以下是测试结果:
请注意,以分隔符开头的字符串将在开头处生成一个大写字母。 如果这不是您所期望的,您可以始终使用lcfirst。 如果你需要,这是我的第一个:
function lcfirst(str) {
return str && str.charAt(0).toLowerCase() + str.substring(1);
}
答案 7 :(得分:1)
function camelCase(str){
str = $.camelCase(str.replace(/[_ ]/g, '-')).replace(/-/g, '');
return str;//.substring(0,1).toUpperCase()+str.substring(1);
},
答案 8 :(得分:1)
在jquery中使用内置的camelcase方法:
$.camelCase($("#text").html());
答案 9 :(得分:1)
您还可以实现这样的纯JavaScript扩展方法:
String.prototype.capitalize = function () {
return this.toLowerCase().replace(/\b[a-z]/g, function (letter) {
return letter.toUpperCase();
});
};
并称之为:
"HELLO world".capitalize()
答案 10 :(得分:0)
<html>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
$(document).ready(function () {
$('.clsToTitleCase').keyup(function () {
this.value = this.value.replace(/(?:^|\s)\w/g, function (match) {
return match.toUpperCase();
})
});
})
</script>
<body>
<input class='clsToTitleCase' type='text'>
</body>
</html>
答案 11 :(得分:0)
你也可以使用这样的方法 -
toTitleCase: function (str) {
return str.replace(/\w\S*/g, function (txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); });
}
答案 12 :(得分:0)
我已经稍微修改了rBizzle的代码。我不想弄乱世界上的McClouds和McIntosh(我现在正在听凯尔特音乐!),所以我添加了一个条件,仅在全部大写或全部小写的情况下进行修改:
function isUpperCase(str) {
return str === str.toUpperCase();
}
function isLowerCase(str) {
return str === str.toLowerCase();
}
function toProperCase(str) {
//only mess with it if it is all lower or upper case letters
if (isUpperCase(str) || isLowerCase(str)){
var lcStr = str.toLowerCase();
return lcStr.replace(/(?:^|\s)\w/g, function(match) {
return match.toUpperCase();
});
} else {
return str;
}
}
我主要是想与用户争吵他们的数据输入!内部数据是一回事,但是当客户要看到它时,我必须划清界限。