如何使用JavaScript测试字符串中的字母是大写还是小写?
如果字符或整个字符串是数字,josh和maleki的答案将在大写和小写都返回true.使结果成为错误的结果.使用josh的例子
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++;
}
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你可以在这里测试一下:http://jsfiddle.net/Axfxz/(使用Firebug或者......).
???for (var ?i = 0; i这是小写:).
不幸的是,有些小写字母没有大写字母(也可能是相反)。德语中的“ß”是小写字母,但是如果在其上应用第二个功能,则将导致错误。
4> WebFreak001..:其他答案的问题是,当检查小写/大写时,某些字符(如数字或标点符号)也会返回true.
我发现这对它非常有效:
function isLowerCase(str) { return str == str.toLowerCase() && str != str.toUpperCase(); }这适用于标点符号,数字和字母:
assert(isLowerCase("a")) assert(!isLowerCase("Ü")) assert(!isLowerCase("4")) assert(!isLowerCase("_"))要检查一个字母,只需使用即可
isLowerCase(str[charIndex])
不知道为什么其他答案被投票.这是我能想到的唯一解决方案 - 逻辑是"角色是否具有上部&小写变体?如果是,那么返回它是大写还是小写"
@GaurangTandon是的,回答2年后我也注意到了,但我之前没有注意到因为它被包裹在for循环中,将某些东西记录到控制台,而且通常不是可重复使用的代码片段所以我和(基于对此的投票)回答)很多其他人自然只是跳过了答案.因此,我认为将此作为快速复制粘贴答案而不是其他答案是很好的.
5> KooiInc..:您可以使用正则表达式测试和
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也可以看看
@LarsH:我更改了(并简化了)原型方法。现在包括变音符号
@Flame_Phoenix范围\ u0080-u024F可能包含小写变音符,因此测试还应该检查字符本身。
6> Abdennour TO..:const isUpperCase = (string) => /^[A-Z]*$/.test(string)然后 :
isUpperCase('A') // true isUpperCase('a') // false
到目前为止,最快的答案是不分配任何内存或转换数据。
7> Josh..:function isUpperCase(myString) { return (myString == myString.toUpperCase()); } function isLowerCase(myString) { return (myString == myString.toLowerCase()); }
@zaczap - 不正确.这些将转换(然后测试)整个字符串.
+1评论 - 对于原始问题,这个答案稍微偏离了,问题是字符串中的字母(不是整个字符串)
让我们不要忘记严格的相等性检查!=== FTW!
8> maleki..:更具体地说是被问到的问题.传入一个字符串和一个要检查的位置.非常接近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()); }
9> Nat..:您还可以使用正则表达式显式检测大写罗马字母字符.
isUpperCase = function(char) { return !!/[A-Z]/.exec(char[0]); };
编辑:上述函数对于ASCII/Basic拉丁语Unicode是正确的,这可能就是你所关心的.以下版本还支持Latin-1 Supplement和Greek和Coptic Unicode块...如果您出于某种原因需要它.
isUpperCase = function(char) { return !!/[A-ZÀ-ÖØ-Þ??-??-?????????????-?]/.exec(char[0]); };如果你需要进一步的支持(Ѭ大写?),这个策略开始下降,因为有些块混合了大写和小写字符.
这是本页面的最佳答案!其他一切都是胡说八道.
10> James..:有一个非常简单的答案,没有人提到:
function isLowerCase(str) { return str !== str.toUpperCase(); }如果
str.toUpperCase()
不返回相同str
,则必须为小写。要测试大写,请将其更改为str !== str.toLowererCase()
。与其他答案不同,它可以在非字母字符(返回
false
)上正常工作,并且可以在其他字母,重音符号等上工作。
11> Arthur van A..:function isCapital(ch){ return ch.charCodeAt() >= 65 && ch.charCodeAt() <= 90; }
12> Stephen Nels..:这个问题的一个很好的答案应该是简洁,正确处理unicode并处理空字符串和null。
function isUpperCase(c) { return !!c && c != c.toLocaleLowerCase(); }此方法首先处理空字符串,然后处理null,然后确保将给定字符串转换为小写会更改其相等性。这样可以确保该字符串根据当前本地的大写规则包含至少一个大写字母(并且不会对数字和其他没有大写字母的字形返回假肯定)。
最初的问题专门询问有关测试第一个字符的问题。为了使您的代码简单明了,我将第一个字符从字符串中分离出来,而不是测试它是否为大写。