Возможно ли в Javascript узнать, является ли первая буква слова большой буквы?
Проверьте, является ли первая буква слова большой буквы
Ответ 1
var word = "Someword";
console.log( word[0] === word[0].toUpperCase() );
или
var word = "Someword";
console.log( /[A-Z]/.test( word[0]) );
или
var word = "Someword";
console.log( /^[A-Z]/.test( word) );
Смотрите toUpperCase()
и test()
Ответ 2
Другие ответы на этой странице отлично подходят для строк, которые, как известно, содержат только буквы без акцента A-Z. Если вы не можете гарантировать это (например, ввод пользователя), они могут дать неожиданные результаты: ложные срабатывания для некапитализуемых инициалов, таких как "1940-е годы" или "中文", или ложные негативы для инициативных или нериманских инициалов капитала, таких как "Łukasz" или "Łukasz", Александра".
Этот вариант возвращает true, если начальная буква представляет собой прописную букву, и только если это заглавная буква:
function initialIsCapital( word ){
return word[0] !== word[0].toLowerCase();
}
Используйте .charAt(0)
вместо [0]
если вам нужна поддержка IE8. Какой быстрее меняется между браузерами.
Это позволяет избежать двух возможных ловушек с другими ответами:
-
Режимы, использующие
[A-Z]
, не будут соответствовать акцентированным и другим подобным заглавным буквам, отличным от AZ, например, в Åland (Скандинавские острова) и Łukasz Польское название), включая заглавные буквы в нелатинских скриптах, таких как кириллица или греческий (например, Александра). -
Подход с использованием
word[0] === word[0].toUpperCase()
вернет true для слов, начинающихся с не-букв, таких как 1940s, 17th, 123reg (название компании), аббревиатуры типа 2mrw или некоторые слова на некоторых африканских языках, например ! xūún или ǂǐ-sì. Он также будет обрабатывать любой ввод из алфавита, который не имеет заглавных букв, как заглавные буквы (например, 中文).
Поскольку этот подход с произвольным вводом-безопасностью столь же прост и не менее читабельен, как альтернативы, вероятно, лучше использовать его, даже если вы не ожидаете таких исключений.
Вот быстрый тест:
function a(word){
return word[0] !== word[0].toLowerCase();
}
function b(word){
return word[0] === word[0].toUpperCase();
}
function c(word){
return /^[A-Z]/.test( word );
}
function test(word, answer){
console.log( 'Should be '+answer+':', a(word), b(word), c(word), '-------', word );
}
test( 'Łukasz', true ); // regex test fails, returns false
test( 'Александра', true ); // regex test fails, returns false
test( '1940s', false ); // .toUpperCase() test fails, returns true
test( '中文', false ); // .toUpperCase() test fails, returns true
test( 'ß', false ); // All pass on German "sharp S" that has no uppercase
test( 'Z̢̜̘͇̹̭a͎͚͔͕̩̬̭͈͞l̩̱̼̤̣g̲̪̱̼̘̜͟ợ̮̱͎̗̕ͅͅ', true ); // All pass. Phew, Zalgo not awakened
Ответ 3
Да.
var str = "Hello";
if(str[0].toUpperCase() == str[0])
{
window.alert('First character is upper case.');
}
Ответ 4
Только для английских букв:
'A' => 65
'Z' => 90
Это означает, что каждое число между [65, 90] является заглавной буквой:
function startsWithCapitalLetter(word) {
return word.charCodeAt(0) >= 65 && word.charCodeAt(0) <= 90;
}
Ответ 5
Вы можете сделать это несколькими способами:
var myWord = "Hello";
// with string functions
if (myWord.charAt(0) === myWord.charAt(0).toUpperCase()) { /* is upper */ }
// or for newer browsers that support array-style access to string characters
if (myWord[0] === myWord[0].toUpperCase()) { /* is upper */ }
// with regex - may not be appropriate for non-English uppercase
if (/^[A-Z]/.test(myWord) { /* is upper */ }
Обратите внимание, что доступ к символам типа myWord[0]
в стиле массива является функцией ECMAScript 5 и не поддерживается в старых браузерах, поэтому (на данный момент) я бы рекомендовал . charAt().
Если вам нужно сделать этот тест, вы можете сделать небольшую функцию:
function firstLetterIsUpper(str) {
var f = str.charAt(0); // or str[0] if not supporting older browsers
return f.toUpperCase() === f;
}
if (firstLetterIsUpper(myWord)) { /* do something */ }
Ответ 6
var string1 = "this is a string";
var string2 = "This is a string";
if(string1[0] == string1[0].toUpperCase())
alert('is upper case');
else
alert('is not upper case');
if(string2[0] == string2[0].toUpperCase())
alert('is upper case');
else
alert('is not upper case');
Ответ 7
Используя метод match
прототипа строкового объекта:
const word = 'Someword';
console.log(word.match(new RegExp(/^[A-Z]/)) !== null);
Ответ 8
Это может относиться к некоторым из предоставленных полезных ответов, но я очень новичок, так что простите, если я трачу ваше время:
Я столкнулся с первым персонажем, который был пробелом в моем приложении. Сценарий предназначен для приложения, чтобы очистить Google Doc после того, как он был преобразован из PDF. Иногда возникают дополнительные разрывы строк после преобразования из PDF файлов. В этом случае первый символ абзаца является строчным, потому что он является частью предложения в предыдущей строке, а иногда первый символ также является пробелом.
if(paragraphText[0].toUpperCase() != paragraphText[0]){ // This is false for spaces, but true for lowercase letters}
if(paragraphText[0].toLowerCase() == paragraphText[0]){ // This is true for spaces; however, the second character was uppercase, so it was not what I was looking for}
Я не решил, как обращаться с пространством (ами). Ответ, который я имею до сих пор, состоит в том, чтобы пройтись, пока не будет найдено первое письмо.
Пожалуйста, дайте мне знать, если у кого-то есть более быстрый путь, или если я полностью не в курсе. Я очень неопытный, так что будьте нежны. В некотором смысле, это может не дать ответа на вопрос, но в любой ситуации может быть пробел, и сценарий может его пропустить. Я сталкивался с этим и с текстом в электронных таблицах, поэтому он может иметь определенную ценность.