1. ホーム
  2. javascript

[解決済み] Javascript 文字があればtrueを返す関数?

2022-01-26 10:05:42

質問

というタイトルの関数を書きたいと思っています。 isAlpha 文字(できれば長さ1の文字列)を受け取って、それが文字であればtrueを、文字でなければfalseを返す。

問題は、どこに行けばいいのか、完全に行き詰っていることだ。これは講師が授業で出した例です。

var isAlpha = function(ch){

     //if ch is greater than or equal to "a" AND
    // ch is less than or equal to "z" then it is alphabetic

}

var ltr ="a", digit =7;
alert(isAlpha(ltr));
alert(isAlpha(digit))

などといろいろ試してみたのですが、どうしたらいいのかわかりません。

var isAlpha = function(ch){
    if (ch >= "A" && ch <= "z"){
        return true
    }

}
alert(isAlpha(ch))

どなたか、この機能の始め方について、正しい方向を教えてください。

解決方法は?

大文字と小文字を区別しない 正規表現 :

var isAlpha = function(ch){
  return /^[A-Z]$/i.test(ch);
}

コメントにある大小比較の指示に従うことが前提で、入力が長さ1の文字列であることを確認したい場合。

var isAlpha = function(ch){
  return typeof ch === "string" && ch.length === 1
         && (ch >= "a" && ch <= "z" || ch >= "A" && ch <= "Z");
}

console.log(isAlpha("A"));      // true
console.log(isAlpha("a"));      // true
console.log(isAlpha("["));      // false
console.log(isAlpha("1"));      // false
console.log(isAlpha("ABC"));    // false because it is more than one character

を使っていないことにお気づきでしょうか。 if ステートメントを使用します。というのも、この式は ch >= "a" && ch <= "z" || ch >= "A" && ch <= "Z" のどちらかであると評価されます。 true または false というように、単純に return を直接指定することができます。

で試していたものは if (ch >= "A" && ch <= "z") というのは、大文字の "A" と小文字の "z" の間にある文字の範囲には、文字だけでなく "Z" と "a" の間にある他の文字も含まれるからです。