Есть ли встроенный способ с jQuery для "заголовка" строки? Так что, учитывая что-то вроде bob-кузнец, он превращается в "Боб Смит"?
Случай с заголовком jQuery
Ответ 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 ничего не встроено, но вы можете проверить этот сайт с базовым кодом:
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;
}
}