如何使用JavaScript测试字符串中的字母是大写还是小写?
str == str.toUpperCase();
返回的是真还是假
如何使用JavaScript测试字符串中的字母是大写还是小写?
str == str.toUpperCase();
返回的是真还是假
Answers:
如果字符或整个字符串为数字,则josh和maleki的答案在大写和小写形式上都将返回true。使结果为假结果。使用乔什的例子
var character = '5';
if (character == character.toUpperCase()) {
alert ('upper case true');
}
if (character == character.toLowerCase()){
alert ('lower case true');
}
另一种方法是先测试它是否为数字,否则测试它是否为大写或小写示例
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++;
}
!
是数字。
var character='';
if (character == character.toLowerCase())
{
// The character is lowercase
}
else
{
// The character is uppercase
}
如果字符是大写字母,则将记录为true;在其他情况下,将记录为false:
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 : //jsfiddle.net/Axfxz/(使用Firebug或sth)。
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。
我发现这非常有效:
function isLowerCase(str)
{
return str == str.toLowerCase() && str != str.toUpperCase();
}
这将适用于标点符号,数字和字母:
assert(isLowerCase("a"))
assert(!isLowerCase("Ü"))
assert(!isLowerCase("4"))
assert(!isLowerCase("_"))
要检查一个字母,只需使用 isLowerCase(str[charIndex])
const isUpperCase = (string) => /^[A-Z]*$/.test(string)
然后 :
isUpperCase('A') // true
isUpperCase('a') // false
您可以利用正则表达式测试和toUpperCase
方法:
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
&& chr === chr.toUpperCase();
?
\u0080-\u024F
可能包含小写变音符,因此测试还应该检查字符本身。
function isUpperCase(myString) {
return (myString == myString.toUpperCase());
}
function isLowerCase(myString) {
return (myString == myString.toLowerCase());
}
更具体地说是要问什么。传入一个字符串和一个要检查的位置。与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());
}
您还可以使用正则表达式来显式检测大写罗马字母字符。
isUpperCase = function(char) {
return !!/[A-Z]/.exec(char[0]);
};
编辑:上面的功能对于ASCII /基本拉丁Unicode是正确的,这可能是您将要关心的全部。以下版本还支持Latin-1补充以及希腊和科普特Unicode块...如果出于某些原因需要它。
isUpperCase = function(char) {
return !!/[A-ZÀ-ÖØ-ÞΆΈ-ΏΑ-ΫϢϤϦϨϪϬϮϴϷϹϺϽ-Ͽ]/.exec(char[0]);
};
如果您需要进一步的支持(Ѭ是大写字母),此策略就会开始失败,因为某些块会混合使用大写和小写字符。
.toLowerCase()
或.toUpperCase()
进行比较的解决方案是首选方案,因为它们内部支持大多数语言环境。
有一个非常简单的答案,没有其他人提到过:
function isLowerCase(str) {
return str !== str.toUpperCase();
}
如果str.toUpperCase()
不返回相同str
,则必须为小写。要测试大写,请将其更改为str !== str.toLowererCase()
。
与其他答案不同,它可以在非字母字符(返回false
)上正常工作,并且可以在其他字母,重音符号等上工作。
"É"
的不是小写。
最好的方法是.test()
对字符串使用正则表达式,三元运算符和内置方法。
我把正则表达式的来龙去脉和字符串的测试方法交给Google(它们很容易找到),但是这里我们将用它来测试您的变量。
/[a-z]/i.test(your-character-here)
根据您的字符是否与正则表达式中的字符集匹配,这将返回FALSE的TRUE。我们的正则表达式/[a-z]/
通过i
标志来检查所有字母az,无论大小写如何。
因此,基本测试将是:
var theAnswer = "";
if (/[a-z]/i.test(your-character-here)) {
theAnswer = "It's a letter."
}
现在我们需要确定它是大写还是小写。因此,如果我们i
从正则表达式中删除该标志,则上面的代码将测试小写字母az。如果我们坚持另一个if
在声明中else
我们第一次的if
发言中,我们可以通过使用AZ测试大写了。像这样:
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);
}
上面的代码看起来不错,但效果不佳,因为如果我们的字符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."));
}
最后,我们得到了一段优雅,简洁的代码。;)
您可以使用match方法和regex来测试您的数组是大写还是小写的字符串,下面只是开始测试的基础
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)
您也可以使用它,它将检查字符串的大小写
var s = "a"
if(/[a-z]/.test(s)){
alert ('lower case true');
}
if(/[A-Z]/.test(s)) {
alert ('upper case true');
}
这将检查整个字符串,而不仅仅是第一个字母。我以为可以和这里的所有人分享。
这是一个使用正则表达式测试字符串字母的函数;如果字母为大写(AZ),则返回true。然后,我们将true / false数组减小为单个值。如果它等于字符串的长度,则意味着所有字母都通过了正则表达式测试,这意味着字符串是大写的。如果不是,则字符串为小写。
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)检查字符/字符串s
是否小写
s.toLowerCase() == s && s.toUpperCase() != s
2)检查是否s
为大写
s.toUpperCase() == s && s.toLowerCase() != s
涵盖s
包含非字母字符和变音符的情况。
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” .charCode(0)
var myChar = new String(“ A”); myChar.charCodeAt(0); “ A”:数字代码“ 65”
这个问题显然已经回答了很多次,但是我想我会分享我的解决方案,因为在给定的答案中我还没有看到。
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美分
请参阅我对所选答案的评论。限制到ASCII表或使用实际字符文字的其他解决方案完全忽略了Unicode和那里的有大小写的其他数百个字符。
此代码会将caseGroup变量设置为:
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;
}
另一种方法是将字符与一个空对象进行比较,我真的不知道为什么它起作用,但是它起作用:
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
}
所以在一个函数中:
function charIsUpper(character) {
return character<{};
}
编辑:不适用于重音符号和变音符号,因此可以将其删除
function charIsUpper(character) {
return character
.normalize('NFD')
.replace(/[\u0300-\u036f]/g, '')<{};
}
[object Object]
。您基本上是在检查字母的字符代码是否在前面[
。由于用于字符代码Z, [, a
是90, 91, 97
分别比较是truthy为大写字母和falsy为小写字母。换句话说,这与使用36进制数字获取字母表字母一样,是一种非常棘手的方法。
character.normalize("NFD").replace(/[\u0300-\u036f]/g
我使用的一个(注意这不会使“ TestString”成为“ Test String”或“ Test String”)。
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字符...)进行测试。因为空格,数字,标记...在大写和小写字母上都是相同的,并且我想找到真正的大写字母,所以我这样做:
let countUpperCase = 0;
let i = 0;
while (i <= string.length) {
const character = string.charAt(i);
if (character === character.toUpperCase() && character !== character.toLowerCase()) {
countUpperCase++;
}
i++;
}
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 } ));
isUpperCaseCharExists = function(str){
for(var i = 0; i < str.length; i++){
var character = str.charAt(i);
if(isNaN(character)){ // if number ignore
var upCharacter = character.toUpperCase();
var lowCharacter = character.toLowerCase();
if(upCharacter != lowCharacter){ // if special char ignore
if(character == upCharacter){
return true;
}
}
}
}
return false;
}