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

How can I test if a letter in a string is uppercase or lowercase using JavaScript?

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


如果字符或整个字符串是数字,Josh和Maleki的回答将在大小写上都返回true。使结果成为错误的结果。使用Josh的示例

1
2
3
4
5
6
7
var character = '5';
if (character == character.toUpperCase()) {
 alert ('upper case true');
}
if (character == character.toLowerCase()){
 alert ('lower case true');
}

另一种方法是先测试它是否为数字,否则测试它是否为大写或小写。例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var strings = 'this iS a TeSt 523 Now!';
var i=0;
var character='';
while (i <= strings.length){
    character = strings.charAt(i);
    if (!isNaN(character * 1)){
        alert('character is numeric');
    }else{
        if (character == character.toUpperCase()) {
            alert ('upper case true');
        }
        if (character == character.toLowerCase()){
            alert ('lower case true');
        }
    }
    i++;
}


1
2
3
4
5
6
7
8
if (character == character.toLowerCase())
{
  // The character is lowercase
}
else
{
  // The character is uppercase
}


如果字符为大写字母,则记录为真,否则记录为假:

1
2
3
4
5
6
7
8
9
10
var letters = ['a', 'b', 'c', 'A', 'B', 'C', '(', ')', '+', '-', '~', '*'];

???for (var ?i = 0; i<letters.length; i++) {
    if (letters[i] === letters[i].toUpperCase()
        && letters[i] !== letters[i].toLowerCase()) {
        console.log(letters[i] +":" + true);
    } else {
        console.log(letters[i] +":" + false);
    }
}?

你可以在这里测试它:http://jsfidle.net/axfxz/(使用firebug或sth)。

1
2
3
4
5
6
7
8
???for (var ?i = 0; i<letters.length; i++) {
    if (letters[i] !== letters[i].toUpperCase()
        && letters[i] === letters[i].toLowerCase()) {
        console.log(letters[i] +":" + true);
    } else {
        console.log(letters[i] +":" + false);
    }
}?

这是小写的:)。


其他答案的问题是,某些字符(如数字或标点)在检查小写/大写时也返回true。

我觉得这个很好用:

1
2
3
4
function isLowerCase(str)
{
    return str == str.toLowerCase() && str != str.toUpperCase();
}

这适用于标点、数字和字母:

1
2
3
4
assert(isLowerCase("a"))
assert(!isLowerCase("ü"))
assert(!isLowerCase("4"))
assert(!isLowerCase("_"))

要检查一个字母,只需使用isLowerCase(str[charIndex])调用它。


1
const isUpperCase = (string) => /^[A-Z]*$/.test(string)

然后:

1
2
isUpperCase('A') // true
isUpperCase('a') // false


您可以使用正则表达式测试和toUpperCase方法:

1
2
3
4
5
6
7
8
String.prototype.charAtIsUpper = function (atpos){
      var chr = this.charAt(atpos);
      return /[A-Z]|[\u0080-\u024F]/.test(chr) && chr === chr.toUpperCase();
};
// usage (note: character position is zero based)
'hi There'.charAtIsUpper(3);      //=> true
'BLUE CURA?AO'.charAtIsUpper(9);  //=> true
'Hello, World!'.charAtIsUpper(5); //=> false

另请参见


1
2
3
4
5
6
function isUpperCase(myString) {
  return (myString == myString.toUpperCase());
}
function isLowerCase(myString) {
  return (myString == myString.toLowerCase());
}


更具体地说就是要问什么。传递一个字符串和一个要检查的位置。非常接近乔希的,除了这一个会比较大的字符串。可能会添加评论,但我还没有这种能力。

1
2
3
4
5
6
7
function isUpperCase(myString, pos) {
    return (myString.charAt(pos) == myString.charAt(pos).toUpperCase());
}  

function isLowerCase(myString, pos) {
    return (myString.charAt(pos) == myString.charAt(pos).toLowerCase());
}


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

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

编辑:上面的函数对于ASCII/BASIC拉丁Unicode是正确的,这可能是您所关心的全部内容。下面的版本还支持拉丁语1增补和希腊语和哥普特语Unicode块…以防你出于某种原因需要它。

1
2
3
isUpperCase = function(char) {
  return !!/[A--??-T??-?Α-?????????????-?]/.exec(char[0]);
};

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


有一个非常简单的答案,其他人都没有提到:

1
2
3
function isLowerCase(str) {
    return str !== str.toUpperCase();
}

如果str.toUpperCase()不返回同一个str,则必须是小写。为了测试大写,您将其更改为str !== str.toLowererCase()

与其他答案不同,它在非字母字符(返回false)上正确工作,并且适用于其他字母、重音字符等。


这个问题的一个好答案应该简洁,正确处理Unicode,并处理空字符串和空值。

1
2
3
function isUpperCase(c) {
    return !!c && c != c.toLocaleLowerCase();
}

这种方法首先处理空字符串和空值,然后确保将给定字符串转换为小写会改变其相等性。这样可以确保字符串至少包含一个大写字母,符合当前本地的大写规则(并且不会为没有大写的数字和其他字形返回误报)。

最初的问题是关于测试第一个字符的。为了让代码简单明了,我将第一个字符从字符串中分离出来,分别测试它是否为大写。


1
2
3
4
5
6
function isCapital(ch){
    if(ch.charCodeAt() >= 65 && ch.charCodeAt() <= 90){
        return true;
    }
    return false;
}


这是一个使用简单regex的简单易读的解决方案。

1
2
3
4
5
// Get specific char in string
const char = string.charAt(index);

const isLowerCaseLetter = (/[a-z]/.test(char));
const isUpperCaseLetter = (/[A-Z]/.test(char));

您可以使用匹配方法和正则表达式测试数组是否具有大写或小写字符串,下面只是启动测试的基本基础。

1
2
3
4
5
6
7
8
9
10
11
12
13
  var array = ['a', 'b', 'c', 'A', 'B', 'C', '(', ')', '+', '-', '~', '*'];
  var character = array.join('')
      console.log(character)

  var test = function(search){
      upperCase = search.match(/[A-Z]/g)
      console.log(upperCase)

      lowerCase = search.match(/[a-z]/g)
      console.log(lowerCase)
   }

   test(character)


最好的方法是对字符串使用正则表达式、三元运算符和内置的.test()方法。

我让你用谷歌搜索正则表达式的输入和输出以及字符串的测试方法(它们很容易找到),但在这里我们将使用它来测试变量。

1
/[a-z]/i.test(your-character-here)

这将根据字符是否与正则表达式中的字符集匹配返回true或false。由于i标志的存在,我们的正则表达式会检查所有字母a-z /[a-z]/,不管它们的大小写如何。

所以,一个基本的测试是:

1
2
3
4
var theAnswer ="";
if (/[a-z]/i.test(your-character-here)) {
  theAnswer ="It's a letter."
}

现在我们需要确定它是大写还是小写。因此,如果我们从正则表达式中删除i标志,那么上面的代码将测试小写字母a-z。如果我们在第一个if语句的else中插入另一个if语句,那么我们也可以使用a-z来测试大写字母。如下所示:

1
2
3
4
5
6
var theAnswer ="";
if (/[a-z]/.test(your-character-here)) {
  theAnswer ="It's a lower case letter."
} else if (/[A-Z]/.test(your-character-here)) {
  theAnswer ="It's an upper case letter.";
}

为了以防万一这不是一封信,我们可以添加一个最后的else语句:

1
2
3
4
5
6
7
8
var theAnswer ="";
if (/[a-z]/.test(your-character-here)) {
  theAnswer ="It's a lower case letter."
} else if (/[A-Z]/.test(your-character-here)) {
  theAnswer ="It's an upper case letter.";
} else {
  theAnswer ="It's not a letter."
}

上面的代码可以工作。但有点难看。相反,我们可以使用"三元运算符"替换上面的if-else语句。三元运算符只是对if-else进行编码的简单方法。语法很简单:

1
(statement-to-be-evaluated) ? (code-if-true) : (code-if-false)

它们也可以相互嵌套。所以函数可能看起来像:

1
2
3
4
5
6
var theAnswer ="";
function whichCase(theLetter) {
  theAnswer = /[a-z]/.test(theLetter) ?"It's lower case." :"";
  theAnswer = /[A-Z]/.test(theLetter) ?"It's upper case." :"";
  return(theAnswer);
}

上面的代码看起来不错,但不太管用,因为如果我们的字符是小写的,那么当测试大写的时候,theAnswer会被设置为"when it test for uppercase,so let nest them:

1
2
3
4
5
var theAnswer ="";
function whichCase(theLetter) {
  theAnswer = /[a-z]/.test(theLetter) ?"It's lower case." : (/[A-Z]/.test(theLetter) ?"It's upper case." :"It's not a letter.");
  return(theAnswer);
}

那会很管用的!但是不需要有两条单独的行来设置变量theAnswer,然后返回它。我们应该使用letconst,而不是var(如果你不确定原因,可以查一下)。一旦我们做出这些改变:

1
2
3
function whichCase(theLetter) {
  return(/[A-Z]/.test(theLetter) ?"It's upper case." : (/[a-z]/.test(theLetter) ?"It's lower case." :"It's not a letter."));
}

最后我们得到了一段优雅、简洁的代码。;)


这检查整个字符串,而不仅仅是第一个字母。我想我会和这里的每个人分享。

这里是一个函数,它使用正则表达式来测试字符串中的字母;如果字母是大写(A-Z),则返回true。然后我们将真/假数组减少到一个值。如果它等于字符串的长度,这意味着所有字母都通过了regex测试,这意味着字符串是大写的。如果不是,则字符串是小写的。

1
2
3
4
5
6
7
8
9
10
11
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


您也可以使用这个,它将检查字符串的大小写

1
2
3
4
5
6
7
8
var s ="a"
if(/[a-z]/.test(s)){
  alert ('lower case true');
}

if(/[A-Z]/.test(s)) {
 alert ('upper case true');
}


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
function checkCharType (charToCheck) {
    // body...
    var returnValue ="O";
    var charCode = charToCheck.charCodeAt(0);

    if(charCode >="A".charCodeAt(0) && charCode <="Z".charCodeAt(0)){

        returnValue ="U";

    }else if (charCode >="a".charCodeAt(0) &&
                charCode <="z".charCodeAt(0) ){
        returnValue ="L";
    }else if (charCode >="0".charCodeAt(0) &&
            charCode <="9".charCodeAt(0)  ) {
        returnValue ="N";
    }
    return returnValue;
}

var myString = prompt("Enter Some text:","Hello world !");

switch (checkCharType(myString)) {
    case"U":
        // statements_1
        document.write("First character was upper case");
        break;

    case"L":
        document.write("First character was a lower case");
        break;
    case"N":
        document.write("First character was a number");
        break
    default:
        // statements_def
        document.write("First character was not a character or a number");
        break;
}
  • 定义一个函数checkCharType()。通过声明变量returnValue并将其初始化为字符"o"来表示它是其他值。

  • U代表大写;L代表小写;N代表数字

  • 使用charcodeat()方法获取第一个字符的字符代码。

  • 使用if语句,该语句检查字符代码属于哪个值范围。

  • 如果它位于a和z的字符代码之间,则为大写,A和Z之间的字符代码,小写。等等。

  • "A".字符代码(0)

    var mychar=新字符串("a");mychar.charcodeat(0);"A":数字代码"65"

  • 检查字符串

  • 这个问题已经被清楚地回答了很多次,但我想我会分享我的解决方案,因为我在给定的答案中没有看到它。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    var lower_case = function(letter){
        lowers ="abcdefghijklmnopqrstuvwxyz";
        return letter === letter.toLowerCase() && lowers.indexOf(letter) >= 0
    };

    var upper_case = function(letter){
        uppers ="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        return letter === letter.toUpperCase() && uppers.indexOf(letter) >= 0
    };

    2℃


    另一种方法是将角色与空对象进行比较,我不知道这是为什么,但它是有效的:

    1
    2
    3
    4
    5
    6
    7
    8
    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
    }

    所以在函数中:

    1
    2
    3
    function charIsUpper(character) {
       return character<{};
    }


    查看我对所选答案的评论。其他限制到ASCII表或使用实际字符文本的解决方案完全忽略Unicode和其他数百个有大小写的字符。

    此代码将caseGroup变量设置为:

    • 1个大写
    • -1表示小写
    • 0表示无大小写

      1
      var caseGroup = (character.toLowerCase() == character.toUpperCase() ? 0 : (character == character.toUpperCase() ? 1 : -1));

    你可以把它烤成这样…

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
        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
    2
    3
    4
    function checkCase(c){
        var u = c.toUpperCase();
        return (c.toLowerCase() === u ? -1 : (c === u ? 1 : 0));
    };

    基于声波胡须评论的主要答案。我改变了结果的逻辑:

    • 0:小写

    • 1:大写

    • -1:两者都没有


    我使用的一个(注意这不会使"t est string"成为"t est string"或"test string")。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    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;
    }


    我需要测试任何字符的字符串(包括空格、标记、数字、Unicode字符…)。因为空白,数字,标记…大小写都一样,我想找到真正的大写字母,我这样做:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    let countUpperCase = 0;
    let i = 0;
    while (i <= string.length) {
      const character = string.charAt(i);
      if (character === character.toUpperCase() && character !== character.toLowerCase()) {
        countUpperCase++;
      }
      i++;
    }


    我最近就是这样做的:

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

    江户十一〔七〕号

    2)检查s是否为大写

    埃多克斯1〔9〕

    包括s包含非字母字符和音调符号的情况。


    假设一个字符串只有在至少存在一个小写字母的情况下才被认为不是全部大写,那么这就可以正常工作。我知道它不像其他人想做的那样简洁明了,但它能起作用吗=)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function isUpperCase(str) {
        for (var i = 0, len = str.length; i < len; i++) {
            var letter = str.charAt(i);
            var keyCode = letter.charCodeAt(i);
            if (keyCode > 96 && keyCode < 123) {
                return false;
            }
        }

        return true;
    }


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <script type="text/javascript">
    function check(){
        var str="AabczZ";
        for(var i=0;i<str.length;i++){
            var char=str.charCodeAt(i);
            if(char>=65 && char<=90){
                // char is in uppercase
            }else if(char>=97 && char<=122){
                // char is in lowercase
            }else{
                // special Char
            }
        }
    }