如何使用JavaScript测试字符串中的字母是大写还是小写?


当前回答

这检查了整个字符串,而不仅仅是第一个字母。我想跟大家分享一下。

下面是一个函数,它使用正则表达式来测试字符串中的字母;如果字母是大写的(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

其他回答

还可以使用正则表达式显式地检测大写罗马字母字符。

isUpperCase = function(char) {
  return !!/[A-Z]/.exec(char[0]);
};

EDIT:上面的函数对ASCII/基本拉丁Unicode是正确的,这可能是你所关心的。以下版本还支持拉丁-1补充和希腊和科普特Unicode块…以防你因为什么原因需要它。

isUpperCase = function(char) {
  return !!/[A-ZÀ-ÖØ-ÞΆΈ-ΏΑ-ΫϢϤϦϨϪϬϮϴϷϹϺϽ-Ͽ]/.exec(char[0]);
};

如果您需要进一步的支持(Ѭ是大写的吗?),这个策略就会失效,因为有些块会混合大小写字符。

function isCapital(ch){
    return ch.charCodeAt() >= 65 && ch.charCodeAt() <= 90;
}

请参阅我对所选答案的评论。其他限制ASCII表或使用实际字符字面量的解决方案完全忽略了Unicode和那里有大小写的数百个其他字符。

这段代码将把caseGroup变量设置为:

1为大写 -1表示小写 0表示不带大小写 var caseGroup = (character.toLowerCase() == character.toUpperCase() ?0:(character == character. touppercase () ?1: -1));

你可以把它烤成这样……

    function determineCase(character) {
        return (character.toLowerCase() == character.toUpperCase() ? 0 : (character == character.toUpperCase() ? 1 : -1));
    }

    function isUpper(character) {
        return determineCase(character) == 1;
    }

    function isLower(character) {
        return determineCase(character) == -1;
    }

    function hasCase(character) {
        return determineCase(character) != 0;
    }

我最近是这样做的:

1)检查字符/字符串s是否是小写的

s. tolowercase () == s && s. touppercase ()

2) s为大写

s. touppercase () == s && s. tolowercase ()

涵盖s包含非字母字符和变音符符号的情况。

Stephen Nelsons的函数转换成带有大量测试示例的原型。

为了完整起见,我还在函数中添加了整个字符串。

有关其他注释,请参阅代码。

/* Please note, there's no requirement to trim any leading or trailing white spaces. This will remove any digits in the whole string example returning the correct result. */ String.prototype.isUpperCase = function(arg) { var re = new RegExp('\\s*\\d+\\s*', 'g'); if (arg.wholeString) {return this.replace(re, '') == this.replace(re, '').toUpperCase()} else return !!this && this != this.toLocaleLowerCase(); } console.log('\r\nString.prototype.isUpperCase, whole string examples'); console.log(' DDD is ' + ' DDD'.isUpperCase( { wholeString:true } )); console.log('9 is ' + '9'.isUpperCase( { wholeString:true } )); console.log('Aa is ' + 'Aa'.isUpperCase( { wholeString:true } )); console.log('DDD 9 is ' + 'DDD 9'.isUpperCase( { wholeString:true } )); console.log('DDD is ' + 'DDD'.isUpperCase( { wholeString:true } )); console.log('Dll is ' + 'Dll'.isUpperCase( { wholeString:true } )); console.log('ll is ' + 'll'.isUpperCase( { wholeString:true } )); console.log('\r\nString.prototype.isUpperCase, non-whole string examples, will only string on a .charAt(n) basis. Defaults to the first character'); console.log(' DDD is ' + ' DDD'.isUpperCase( { wholeString:false } )); console.log('9 is ' + '9'.isUpperCase( { wholeString:false } )); console.log('Aa is ' + 'Aa'.isUpperCase( { wholeString:false } )); console.log('DDD 9 is ' + 'DDD 9'.isUpperCase( { wholeString:false } )); console.log('DDD is ' + 'DDD'.isUpperCase( { wholeString:false } )); console.log('Dll is ' + 'Dll'.isUpperCase( { wholeString:false } )); console.log('ll is ' + 'll'.isUpperCase( { wholeString:false } )); console.log('\r\nString.prototype.isUpperCase, single character examples'); console.log('BLUE CURAÇAO'.charAt(9) + ' is ' + 'BLUE CURAÇAO'.charAt(9).isUpperCase( { wholeString:false } )); console.log('9 is ' + '9'.isUpperCase( { wholeString:false } )); console.log('_ is ' + '_'.isUpperCase( { wholeString:false } )); console.log('A is ' + 'A'.isUpperCase( { wholeString:false } )); console.log('d is ' + 'd'.isUpperCase( { wholeString:false } )); console.log('E is ' + 'E'.isUpperCase( { wholeString:false } )); console.log('À is ' + 'À'.isUpperCase( { wholeString:false } )); console.log('É is ' + 'É'.isUpperCase( { wholeString:false } )); console.log('Ñ is ' + 'Ñ'.isUpperCase( { wholeString:false } )); console.log('ñ is ' + 'ñ'.isUpperCase( { wholeString:false } )); console.log('Þ is ' + 'Þ'.isUpperCase( { wholeString:false } )); console.log('Ͻ is ' + 'Ͻ'.isUpperCase( { wholeString:false } )); console.log('Ͽ is ' + 'Ͽ'.isUpperCase( { wholeString:false } )); console.log('Ά is ' + 'Ά'.isUpperCase( { wholeString:false } )); console.log('Έ is ' + 'Έ'.isUpperCase( { wholeString:false } )); console.log('ϴ is ' + 'ϴ'.isUpperCase( { wholeString:false } )); console.log('Ϋ is ' + 'Ϋ'.isUpperCase( { wholeString:false } )); console.log('Ϣ is ' + 'Ϣ'.isUpperCase( { wholeString:false } )); console.log('Ϥ is ' + 'Ϥ'.isUpperCase( { wholeString:false } )); console.log('Ϧ is ' + 'Ϧ'.isUpperCase( { wholeString:false } )); console.log('Ϩ is ' + 'Ϩ'.isUpperCase( { wholeString:false } )); console.log('Ϫ is ' + 'Ϫ'.isUpperCase( { wholeString:false } )); console.log('Ϭ is ' + 'Ϭ'.isUpperCase( { wholeString:false } )); console.log('Ϯ is ' + 'Ϯ'.isUpperCase( { wholeString:false } )); console.log('Ϲ is ' + 'Ϲ'.isUpperCase( { wholeString:false } )); console.log('Ϸ is ' + 'Ϸ'.isUpperCase( { wholeString:false } )); console.log('Ϻ is ' + 'Ϻ'.isUpperCase( { wholeString:false } ));