在JavaScript中检查字符串是否全部为大写的最佳方法是什么:

时间:2017-10-05 06:34:39

标签: javascript

我已经搜索了一段时间。但是没有完美的答案。

例如,有人说我可以使用:

function isUpperCase(str) {
    return str === str.toUpperCase();
}

这适用于一个简单的案例,但不适用于复杂案例。

例如:

isUpperCase('ABC'); // works good
isUpperCase('ABcd'); // works good too
isUpperCase('汉字'); // not working, should be false.

5 个答案:

答案 0 :(得分:4)

怎么样

function isUpperCase(str) {
    return str === str.toUpperCase() && str !== str.toLowerCase();
}

匹配最后一个

答案 1 :(得分:4)

RegExp /^[A-Z]+$/会返回预期结果

const isUpperCase = str => /^[A-Z]+$/.test(str);

console.log(
  isUpperCase("ABC")
  , isUpperCase("ABcd")
  , isUpperCase("汉字")
);

答案 2 :(得分:2)

您可以尝试使用正则表达式方法。

   const isUpperCase2 = (string) => /^[A-Z]*$/.test(string);
   isUpperCase2('ABC'); // true
   isUpperCase2('ABcd'); // false
   isUpperCase2('汉字'); // false

希望得到这个帮助;

答案 3 :(得分:0)

试试这个

function isUpperCase(str){
   for (i = 0; i < str.length; i++) { 
    var charCode=str.charCodeAt(i);
         if(charCode<65||charCode>90){
            return false;
          }
      }
     return true;
   }

您可以通过ascii代码检查字母。

答案 4 :(得分:0)

首先,您的代码似乎工作正常。

汉字的小写字符和汉字的大写字符具有相同的数值,如下所示:

&#13;
&#13;
var str = '汉字';
for (i = 0; i < str.length; i++){
    console.log(str[i], str.charCodeAt(i), str.toUpperCase().charCodeAt(i),str.toLowerCase().charCodeAt(i))
}
&#13;
&#13;
&#13;

让我们将此结果与其他字符串进行比较:

&#13;
&#13;
    var str = 'łóÐŻCakf8';
    for (i = 0; i < str.length; i++){
        console.log(str[i], str.charCodeAt(i), str.toUpperCase().charCodeAt(i),str.toLowerCase().charCodeAt(i))
    }
&#13;
&#13;
&#13;