如何使用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()); 
}