我已经搜索了一段时间。但是没有完美的答案。
例如,有人说我可以使用:
function isUpperCase(str) {
return str === str.toUpperCase();
}
这适用于一个简单的案例,但不适用于复杂案例。
例如:
isUpperCase('ABC'); // works good
isUpperCase('ABcd'); // works good too
isUpperCase('汉字'); // not working, should be false.
答案 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)
首先,您的代码似乎工作正常。
汉字
的小写字符和汉字
的大写字符具有相同的数值,如下所示:
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;
让我们将此结果与其他字符串进行比较:
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;