string js нижний - Как сделать первую букву строки в верхнем регистре в JavaScript?





15 Answers

Более объектно-ориентированный подход:

String.prototype.capitalize = function() {
    return this.charAt(0).toUpperCase() + this.slice(1);
}

А потом:

"hello world".capitalize();  =>  "Hello world" 
каждое слово большой

Как сделать первую букву строки в верхнем регистре, но не изменить случай любой из других букв?

Например:

  • "this is a test" -> "This is a test"
  • "the Eiffel Tower" -> "The Eiffel Tower"
  • "/index.html" -> "/index.html"



Вот укороченная версия популярного ответа, который получает первую букву, обрабатывая строку как массив:

function capitalize(s)
{
    return s[0].toUpperCase() + s.slice(1);
}

Обновить:

Согласно приведенным ниже комментариям это не работает в IE 7 или ниже.

Обновление 2:

Чтобы избежать undefined для пустых строк (см . Комментарий @ njzk2 ниже ), вы можете проверить пустую строку:

function capitalize(s)
{
    return s && s[0].toUpperCase() + s.slice(1);
}



Для другого случая мне нужно, чтобы он заглавил первую букву, а нижний - остальные. Следующие случаи заставили меня изменить эту функцию:

//es5
function capitalize(string) {
    return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();
}
capitalize("alfredo")  // => "Alfredo"
capitalize("Alejandro")// => "Alejandro
capitalize("ALBERTO")  // => "Alberto"
capitalize("ArMaNdO")  // => "Armando"

// es6 using destructuring 
const capitalize = ([first,...rest]) => first.toUpperCase() + rest.join('').toLowerCase();



var string = "hello world";
string = string.charAt(0).toUpperCase() + string.slice(1);
alert(string);



Это решение ES6 + 2018 :

const str = 'the Eiffel Tower';
const newStr = `${str[0].toUpperCase()}${str.slice(1)}`;
console.log('Original String:', str); // the Eiffel Tower
console.log('New String:', newStr); // The Eiffel Tower




Мы могли бы получить первого персонажа с одним из моих любимых RegExp , похожим на симпатичный смайлик: /^./

String.prototype.capitalize = function () {
  return this.replace(/^./, function (match) {
    return match.toUpperCase();
  });
};

И для всех кофе-наркоманов:

String::capitalize = ->
  @replace /^./, (match) ->
    match.toUpperCase()

... и для всех парней, которые думают, что есть лучший способ сделать это, не расширяя собственные прототипы:

var capitalize = function (input) {
  return input.replace(/^./, function (match) {
    return match.toUpperCase();
  });
};



Если вы используете underscore.js или Lo-Dash , библиотека underscore.string предоставляет расширения строк, включая capize:

_.capitalize (string) Преобразует первую букву строки в верхний регистр.

Пример:

_.capitalize("foo bar") == "Foo bar"



В CSS это выглядит проще:

<style type="text/css">
    p.capitalize {text-transform:capitalize;}
</style>
<p class="capitalize">This is some text.</p>

Это из CSS text-transform PropertyW3Schools ).




Если вы хотите переформатировать весь текст, вы можете изменить другие примеры как таковые:

function capitalize (text) {
    return text.charAt(0).toUpperCase() + text.slice(1).toLowerCase();
}

Это обеспечит изменение следующего текста:

TEST => Test
This Is A TeST => This is a test



String.prototype.capitalize = function(){
    return this.replace( /(^|\s)([a-z])/g , function(m,p1,p2){ return p1+p2.toUpperCase();
    } );
};

Использование:

capitalizedString = someString.capitalize();

Это текстовая строка => This Is A Text String




Вот функция, называемая ucfirst () (сокращение от «первой буквы первой буквы»):

function ucfirst(str) {
    var firstLetter = str.substr(0, 1);
    return firstLetter.toUpperCase() + str.substr(1);
}

Вы можете загладить строку, вызвав ucfirst («некоторая строка») - например,

ucfirst("this is a test") --> "This is a test"

Он работает, разбивая струну на две части. На первой строке он вытаскивает firstLetter, а затем на второй строке он заглаживает firstLetter , вызывая firstLetter.toUpperCase () и присоединяет его к остальной части строки, которая найдена путем вызова str.substr (1) .

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




yourString.replace(/^[a-z]/, function(m){ return m.toUpperCase() });

(Вы можете инкапсулировать его в функцию или даже добавить его в прототип String, если вы его часто используете).




Всегда лучше обрабатывать эти виды материалов с помощью CSS сначала , в общем, если вы можете что-то решить с помощью CSS, сначала для этого, затем попробуйте JavaScript для решения ваших проблем, поэтому в этом случае попробуйте использовать :first-letterв CSS и применитьtext-transform:capitalize;

Поэтому попробуйте создать класс для этого, чтобы вы могли использовать его глобально, например: .first-letter-uppercaseи добавьте что-то вроде ниже в свой CSS:

.first-letter-uppercase:first-letter {
    text-transform:capitalize;
}

Также альтернативным вариантом является JavaScript, поэтому лучше всего будет что-то вроде этого:

function capitalizeTxt(txt) {
  return txt.charAt(0).toUpperCase() + txt.slice(1); //or if you want lowercase the rest txt.slice(1).toLowerCase();
}

и назовите его так:

capitalizeTxt('this is a test'); // return 'This is a test'
capitalizeTxt('the Eiffel Tower'); // return 'The Eiffel Tower'
capitalizeTxt('/index.html');  // return '/index.html'

Если вы хотите повторно использовать его снова и снова, лучше присоединить его к встроенной строке Javascript String, поэтому примерно следующее:

String.prototype.capitalizeTxt = String.prototype.capitalizeTxt || function() {
    return this.charAt(0).toUpperCase() + this.slice(1);
}

и назовите его ниже:

'this is a test'.capitalizeTxt(); // return 'This is a test'
'the Eiffel Tower'.capitalizeTxt(); // return 'The Eiffel Tower'
'/index.html'.capitalizeTxt();  // return '/index.html'



yourString.replace(/\w/, c => c.toUpperCase())

Я нашел эту функцию стрелки самой легкой. Replace совпадение символа первой буквы ( \w) вашей строки и преобразуйте его в верхний регистр. Ничего особенного не нужно.







Related