jQuery标题案例

时间:2011-02-23 02:29:35

标签: javascript jquery string

有一个内置的方式与jQuery“标题案例”一个字符串?所以考虑到像鲍勃史密斯这样的东西,它变成了“鲍勃史密斯”?

13 个答案:

答案 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)

您可以使用css,例如:

.className 
{
    text-transform:capitalize;
}

这首字母大写。您可以阅读更多here

答案 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没有内置任何功能,但你可以查看这个有基本代码示例的网站:

http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/

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);
    };
})();

它处理以下所有边缘情况:

  • 默认使用下划线和连字符(可使用第二个参数配置)
  • 带有unicode字符的字符串
  • 以连字符或下划线结尾的字符串
  • 具有连续连字符或下划线的字符串

以下是实时测试的链接:http://jsfiddle.net/avKzf/2/

以下是测试结果:

  • 输入:“ab-cd-ef”,结果:“abCdEf”
  • 输入:“ab-cd-ef-”,结果:“abCdEf”
  • 输入:“ab-cd-ef--”,结果:“abCdEf”
  • 输入:“ab-cd - ef--”,结果:“abCdEf”
  • 输入:“ - ab-cd - ef--”,结果:“AbCdEf”
  • 输入:“ - ab-cd -__- ef--”,结果:“AbCdEf”

请注意,以分隔符开头的字符串将在开头处生成一个大写字母。 如果这不是您所期望的,您可以始终使用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;
	}
}

我主要是想与用户争吵他们的数据输入!内部数据是一回事,但是当客户要看到它时,我必须划清界限。