如何使用JavaScript测试字符串中的字母是大写还是小写?
当前回答
对这个问题的一个好的回答应该是简洁的,正确地处理unicode,并处理空字符串和空值。
function isUpperCase(c) {
return !!c && c != c.toLocaleLowerCase();
}
这种方法首先处理空字符串和null,然后确保将给定字符串转换为小写改变其相等性。这确保字符串根据当前本地的大写规则至少包含一个大写字母(并且不会对没有大写的数字和其他符号返回误报)。
最初的问题特别要求测试第一个字符。为了保持代码的简单和清晰,我将把字符串的第一个字符与测试它是否为大写分开。
其他回答
我使用的一个(注意这并没有使“TestString”成为“TestString”或“TestString”)。
function seperateCapitalised(capitalisedString) {
if (typeof capitalisedString !== "string" || capitalisedString.length === 0)
return capitalisedString;
var newStr = capitalisedString[0];
for (var i = 1; i < capitalisedString.length; i++) {
var char = capitalisedString[i];
if (char === char.toUpperCase() && isNaN(char)) {
newStr += ' ' + char;
}
else {
newStr += char;
}
}
return newStr;
}
我最近是这样做的:
1)检查字符/字符串s是否是小写的
s. tolowercase () == s && s. touppercase ()
2) s为大写
s. touppercase () == s && s. tolowercase ()
涵盖s包含非字母字符和变音符符号的情况。
function solution(s) {
var c = s[0];
if (c == c.toUpperCase() && !(c >= '0' && c <= '9') &&(c >='A' && c <= 'Z')) {
return 'upper';
} else if (c == c.toLowerCase() && !(c >= '0' && c <= '9') &&(c >='a' && c <= 'z')){
return 'lower';
} else if (c >= '0' && c <= '9'){
return 'digit'
} else {
return 'other'
}
}
var str1= (solution('A')) // upper
var str2 = solution('b') // lower
var str3 = solution('1') // digit
var str4 = solution('_') // other
console.log(`${str1} ${str2} ${str3} ${str4}`)
这检查了整个字符串,而不仅仅是第一个字母。我想跟大家分享一下。
下面是一个函数,它使用正则表达式来测试字符串中的字母;如果字母是大写的(A-Z),则返回true。然后我们将true/false数组缩减为单个值。如果它等于字符串的长度,这意味着所有字母都通过了regex测试,这意味着字符串是大写的。如果不是,则字符串为小写。
const isUpperCase = (str) => {
let result = str
.split('')
.map(letter => /[A-Z]/.test(letter))
.reduce((a, b) => a + b);
return result === str.length;
}
console.log(isUpperCase('123')); // false
console.log('123' === '123'.toUpperCase()); // true
更确切地说,是关于被问到的问题。传入一个字符串和一个要检查的位置。和Josh的很接近,只是这个比较的是更大的字符串。会添加作为一个评论,但我还没有这个能力。
function isUpperCase(myString, pos) {
return (myString.charAt(pos) == myString.charAt(pos).toUpperCase());
}
function isLowerCase(myString, pos) {
return (myString.charAt(pos) == myString.charAt(pos).toLowerCase());
}