Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Check if first letter of word is a capital letter

Is it possible in JavaScript to find out if the first letter of a word is a capital letter?

like image 894
James J Avatar asked Nov 30 '11 23:11

James J


People also ask

How do you check if the first letter is capital Python?

To check if a string is in uppercase, we can use the isupper() method. isupper() checks whether every case-based character in a string is in uppercase, and returns a True or False value depending on the outcome.

How do you check if the first letter of a string is lowercase Python?

islower() In Python, islower() is a built-in method used for string handling. The islower() method returns True if all characters in the string are lowercase, otherwise, returns “False”.

How do you check if the first letter of a string is uppercase in C?

C isupper() The isupper() function checks whether a character is an uppercase alphabet (A-Z) or not.


2 Answers

update

Updating with what i think is the most valid approach nowadays.

You can use a Unicode property escapes Regular expression if the support suits you. In this case you can use the General category property for Uppercase Letter Lu.

function isUppercase(word){   return /^\p{Lu}/u.test( word ); } 

older answers

var word = "Someword"; console.log( word[0] === word[0].toUpperCase() ); 

or

var word = "Someword"; console.log( /[A-Z]/.test( word[0]) ); 

or

var word = "Someword"; console.log( /^[A-Z]/.test( word) ); 

See toUpperCase() and test()

like image 188
Gabriele Petrioli Avatar answered Sep 18 '22 19:09

Gabriele Petrioli


The other answers on this page are fine for strings that are known to only contain non-accented A-Z letters. If you can't guarantee this (e.g. user input), they may give unexpected results: false positives for uncapitalisable initials like "1940s" or "中文", or false negatives for accented or non-Roman capital initials like "Łukasz" or "Александра".

This variant returns true if the initial is any capital letter, and only if it's a capital letter:

function initialIsCapital( word ){   return word[0] !== word[0].toLowerCase(); } 

Use .charAt(0) instead of [0] if you need IE8 support. Which is faster varies between browsers.

This avoids two potential pitfalls with the other answers:

  • Regexes using [A-Z] will fail to match accented and other similar non-A-Z capitalised letters such as in Åland (Scandinavian islands) and Łukasz (common Polish name), including capital letters in non-latin scripts such as Cyrillic or Greek (e.g. Александра).

  • The approach using word[0] === word[0].toUpperCase(), will return true on words that start with non-letters, such as 1940s, 17th, 123reg (company name), abbreviations like 2mrw, or some words in some African languages, such as !xūún or ǂǐ-sì. It'll also treat any input from an alphabet that doesn't have capital letters as being capital letters (e.g. 中文).

Since this arbitrary-input-safe approach is just as simple and no less readable than the alternatives, it's probably better to use this even if you don't anticipate such exceptions.

Here's a quick test:

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 
like image 30
user56reinstatemonica8 Avatar answered Sep 21 '22 19:09

user56reinstatemonica8