如何使用JavaScript测试字符串中的字母是大写还是小写?
当前回答
const isUpperCase = (string) => /^[A-Z]*$/.test(string)
然后:
isUpperCase('A') // true
isUpperCase('a') // false
其他回答
在现代浏览器中,您可以使用regexp和unicode属性测试。
/\p{Lu}/u.test("A") // is true
/\p{Lu}/u.test("Å") // is true
/\p{Lu}/u.test("a1å") // is false
更多信息:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions/Unicode_Property_Escapes
一般类别列表如下:
https://unicode.org/reports/tr18/#General_Category_Property
function isUpperCase(myString) {
return (myString == myString.toUpperCase());
}
function isLowerCase(myString) {
return (myString == myString.toLowerCase());
}
另一种方法是将字符与空对象进行比较,我不知道为什么它可以工作,但它可以工作:
for (let i = 1; i <= 26; i++) {
const letter = (i + 9).toString(36).toUpperCase();
console.log('letter', letter, 'is upper', letter<{}); // returns true
}
for (let i = 1; i <= 26; i++) {
const letter = (i + 9).toString(36);
console.log('letter', letter, 'is upper', letter<{}); // returns false
}
在函数中:
function charIsUpper(character) {
return character<{};
}
编辑:它不工作与重音和变音符,所以可以删除它
function charIsUpper(character) {
return character
.normalize('NFD')
.replace(/[\u0300-\u036f]/g, '')<{};
}
const isUpperCase = (string) => /^[A-Z]*$/.test(string)
然后:
isUpperCase('A') // true
isUpperCase('a') // false
我需要测试任何字符的字符串(包括空白,标记,数字,unicode字符…)因为空白、数字、标记……大写字母和小写字母都是一样的,我想找到真正的大写字母,我这样做:
let countUpperCase = 0;
let i = 0;
while (i <= string.length) {
const character = string.charAt(i);
if (character === character.toUpperCase() && character !== character.toLowerCase()) {
countUpperCase++;
}
i++;
}