60

JavaScript で単語の最初の文字が大文字かどうかを調べることは可能ですか?

4

8 に答える 8

112

アップデート

私が考えるもので更新することは、今日最も有効なアプローチです。

サポートが適切であれば、正規表現をエスケープする Unicode プロパティを使用できます。この場合、大文字の一般カテゴリ プロパティを使用できます。Lu

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

古い回答

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()

于 2011-11-30T23:40:10.497 に答える
34

このページの他の回答は、アクセントのない AZ 文字のみを含むことがわかっている文字列には問題ありません。これを保証できない場合 (ユーザー入力など) は、予期しない結果をもたらす可能性があります。"1940s" や "中文" などの大文字を使用できないイニシャルの誤検出、または "Łukasz" や " Александра」。

このバリアントは、イニシャルが大文字の場合に true を返します。大文字の場合のみ:

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

IE8 サポートが必要な場合は.charAt(0)代わりに使用してください。どちらが速いかはブラウザによって異なります[0]

これにより、他の回答の 2 つの潜在的な落とし穴が回避されます。

  • を使用する正規表現は、オーランド(スカンジナビア諸島) やŁukasz[A-Z] (一般的なポーランド名)などのアクセント付きおよびその他の同様の非 AZ 大文字の文字と一致しません 。これには、キリル文字やギリシャ文字などの非ラテン文字 (例: Александра ) の大文字も含まれます。

  • ,を使用したアプローチは、 1940s17th123reg (会社名)word[0] === word[0].toUpperCase()などの文字以外で始まる単語、 2mrwなどの略語、または!xūunǂǐ-sìなどの一部のアフリカ言語の単語に対して true を返します。また、大文字を持たないアルファベットからの入力もすべて大文字として扱います (例:中文)。

この任意の入力に対して安全なアプローチは、他の方法と同じくらい単純で読みやすいため、そのような例外が予想されない場合でも、おそらくこれを使用する方がよいでしょう。

簡単なテストは次のとおりです。

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 

于 2016-09-02T12:17:32.363 に答える
8

はい。

var str = "Hello";
if(str[0].toUpperCase() == str[0])
{
   window.alert('First character is upper case.');  
}
于 2011-11-30T23:40:33.613 に答える
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]はECMAScript5の機能であり、古いブラウザではサポートされていないことに注意してください。したがって、(今のところ).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 */ }
于 2011-12-01T00:43:06.670 に答える
0
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');
于 2011-11-30T23:43:04.040 に答える
0

タイプスクリプト

//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構文を自分の言語に変更してください!

//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;
}
于 2020-08-16T14:20:55.470 に答える