Подтвердить что ты не робот

Случай с заголовком jQuery

Есть ли встроенный способ с jQuery для "заголовка" строки? Так что, учитывая что-то вроде bob-кузнец, он превращается в "Боб Смит"?

4b9b3361

Ответ 1

Для этого вам не нужен 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"

Ответ 2

Вы можете использовать css, например:

.className 
{
    text-transform:capitalize;
}

Это заглавная буква. Вы можете прочитать здесь

Ответ 3

В jQuery 1.4+ (по крайней мере) вы можете использовать

var camelized = jQuery.camelCase("some-string");
// Returns "someString"

Я не мог найти его, когда я в последний раз проверял документацию, но там он и использовался внутри.

Ответ 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

является более простым...
Вы должны использовать обратный вызов взамен.

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

Если вы хотите сразиться с ужасными людьми в мире, которые TYPE IN ALL CAPS, а также заглавием его в то же время, вы можете использовать этот вариант верхнего ответа здесь:

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"

Ответ 7

Я знаю, что этот вопрос немного стар, но

Здесь моя версия функции 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/

Вот результаты тестов:

  • input: "ab-cd-ef", результат: "abCdEf"
  • input: "ab-cd-ef-", result: "abCdEf"
  • input: "ab-cd-ef--", result: "abCdEf"
  • input: "ab-cd - ef--", result: "abCdEf"
  • input: "--ab-cd - ef--", result: "AbCdEf"
  • input: "-ab-cd -__- ef--", result: "AbCdEf"

Обратите внимание, что строки, начинающиеся с разделителей, приведут к заглавной букве в начале. Если это не то, что вы ожидаете, вы всегда можете использовать lcfirst. Здесь мой lcfirst, если вам это нужно:

function lcfirst(str) {
    return str && str.charAt(0).toLowerCase() + str.substring(1);
}

Ответ 8

    function camelCase(str){
        str     = $.camelCase(str.replace(/[_ ]/g, '-')).replace(/-/g, '');
        return  str;//.substring(0,1).toUpperCase()+str.substring(1);
    },

Ответ 9

Вы также можете реализовать чистый метод расширения javascript, например:

String.prototype.capitalize = function () {

    return this.toLowerCase().replace(/\b[a-z]/g, function (letter) {
        return letter.toUpperCase();
    });
};

И назовите его следующим образом:

"HELLO world".capitalize()

Ответ 10

Использовать встроенный метод camelcase в jquery:

$.camelCase($("#text").html());

Ответ 11

<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>

Ответ 12

Вы также можете использовать такой метод -

toTitleCase: function (str) {
        return str.replace(/\w\S*/g, function (txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); });
    }

Ответ 13

Я немного изменил код rBizzle. Я не хочу связываться с McClouds и McIntosh в мире (сейчас я слушаю кельтскую музыку!), Поэтому я добавил условие, которое нужно изменять, только если ALL CAPS или ALL в нижнем регистре:

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