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


当前回答

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

我把正则表达式的里里外外和字符串的测试方法留给你,但在这里我们将使用它来测试你的变量。

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

这将根据您的字符是否匹配正则表达式中的字符集返回TRUE或FALSE。由于i标志,我们的正则表达式检查所有字母a-z /[a-z]/,而不管它们的大小写。

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

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

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

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语句:

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编码方式。语法很简单:

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

这些也可以相互嵌套。所以函数可能是这样的:

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);
}

上面的代码看起来很好,但不能完全工作,因为如果我们的字符是小写的,当它测试大写时,答案会被设置为“”,所以让它们嵌套:

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,然后返回它。我们应该使用let和const而不是var(如果你不确定为什么,请查阅它们)。一旦我们做出这些改变:

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.")); 
}

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

其他回答

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

然后:

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

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

下面是一个函数,它使用正则表达式来测试字符串中的字母;如果字母是大写的(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
if (character == character.toLowerCase())
{
  // The character is lowercase
}
else
{
  // The character is uppercase
}

更确切地说,是关于被问到的问题。传入一个字符串和一个要检查的位置。和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()); 
}

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 } ));