检查第一个字母是否是大写字母

Jam*_*s J 48 javascript

是否有可能在Javascript中找出单词的第一个字母是否是大写字母?

Gab*_*oli 92

var word = "Someword";
console.log( word[0] === word[0].toUpperCase() );
Run Code Online (Sandbox Code Playgroud)

要么

var word = "Someword";
console.log( /[A-Z]/.test( word[0]) );
Run Code Online (Sandbox Code Playgroud)

要么

var word = "Someword";
console.log( /^[A-Z]/.test( word) );
Run Code Online (Sandbox Code Playgroud)

toUpperCase()test()


use*_*ca8 21

此页面上的其他答案适用于已知仅包含非重音AZ字母的字符串.如果你不能保证这一点(例如用户输入),它们可能会产生意想不到的结果:对于诸如"1940年代"或"中文"之类的不可开头的首字母的误报,或对于诸如"Łukasz"或"Łukasz"或"非罗马首都缩写"的假阴性Александра".

如果首字母是任何大写字母,并且当它是大写字母时,此变量返回true :

function initialIsCapital( word ){
  return word[0] !== word[0].toLowerCase();
}
Run Code Online (Sandbox Code Playgroud)

如果您需要IE8支持,请使用.charAt(0)而不是.哪个浏览器的速度更快.[0]

这避免了其他答案的两个潜在缺陷:

  • 使用正[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???????o?????????', true ); // All pass. Phew, Zalgo not awakened 
Run Code Online (Sandbox Code Playgroud)


Mik*_*sen 9

是.

var str = "Hello";
if(str[0].toUpperCase() == str[0])
{
   window.alert('First character is upper case.');  
}
Run Code Online (Sandbox Code Playgroud)


zur*_*fyx 6

仅对于英文字母:

'A' => 65
'Z' => 90
Run Code Online (Sandbox Code Playgroud)

意思是,[65,90]之间的每个数字都是大写字母:

function startsWithCapitalLetter(word) {
  return word.charCodeAt(0) >= 65 && word.charCodeAt(0) <= 90;
}
Run Code Online (Sandbox Code Playgroud)


nnn*_*nnn 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 */ }
Run Code Online (Sandbox Code Playgroud)

请注意,对字符的数组样式访问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 */ }
Run Code Online (Sandbox Code Playgroud)