Check if first letter of word is a capital letter
JavascriptCapitalizeJavascript Problem Overview
Is it possible in JavaScript to find out if the first letter of a word is a capital letter?
Javascript Solutions
Solution 1 - Javascript
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()
Solution 2 - Javascript
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
Solution 3 - Javascript
For English letters only:
'A' => 65
'Z' => 90
Meaning, every number between [65, 90] is a capital letter:
function startsWithCapitalLetter(word) {
return word.charCodeAt(0) >= 65 && word.charCodeAt(0) <= 90;
}
Solution 4 - Javascript
Yes.
var str = "Hello";
if(str[0].toUpperCase() == str[0])
{
window.alert('First character is upper case.');
}
Solution 5 - Javascript
You can do it in several ways:
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 */ }
Note that the array-style access to characters like myWord[0]
is an ECMAScript 5 feature and not supported in older browsers, so (for now) I'd probably recommend the .charAt() method.
If you need to do this test a lot you could make a little function:
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 */ }
Solution 6 - Javascript
Using the match
method of the string object prototype:
const word = 'Someword';
console.log(word.match(new RegExp(/^[A-Z]/)) !== null);
Solution 7 - Javascript
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');
Solution 8 - Javascript
Typescript
//userEntry input as string
//return boolean
oneUppercaseRequired(userEntry: string): boolean {
const letters = /[A-Z]/;
if (letters.test(userEntry[0]))
return true;
return false;
}
for-loop for other languages Change the syntax to your language!
//userEntry param as string
//return boolean
oneUppercaseRequired(userEntry: string): boolean {
const letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
for (let i = 0; i < letters.length; i++) {
if (userEntry[0] == letters[i])
return true;
}
return false;
}