我想撰写一个函式来检查字符串是否包含小写和大写字母。如果两者都存在,它应该回传真,如果缺少一个,它应该回传假。
function lowercaseUppercase (letterCase) {
if (letterCase == letterCase.toUpperCase())
{
return true;
} else {
return false;
};
}
console.log(lowercaseUppercase("GGG"))
true
如果我使用大写字母,并且false
我将小写字母传递给这个函式,这将回传。如果我取代letterCase.toUpperCase()
了letterCase.toLowerCase()
它的作业原理。我希望函式检查两个自变量是否为真。
我可以使用&&
运算子来检查两者吗?
function lowercaseUppercase (letterCase) {
if (letterCase == letterCase.toUpperCase() &&
letterCase == letterCase.toLowerCase())
{
return true;
} else {
return false;
};
}
这不起作用,并为大写、小写和两者的组合回传 false。
如果两者都存在,它希望它回传 true,如果缺少任何一个,它应该回传 false。
谁能指出我哪里出错了?:)
uj5u.com热心网友回复:
您可以使用正则表达式进行检查,true
如果两种情况都是true
.
方法:
RegExp#test
- 逻辑与
&&
function allCases(string) {
const
upper = /[A-Z]/.test(string),
lower = /[a-z]/.test(string);
return upper && lower;
}
console.log(allCases('abc'));
console.log(allCases('ABC'));
console.log(allCases('abC'));
console.log(allCases('123'));
通过迭代字符串的不同方法。
function allCases(string) {
let upper = false,
lower = false;
for (const character of string) {
if (character.toUpperCase() === character.toLowerCase()) continue;
upper ||= character === character.toUpperCase();
lower ||= character === character.toLowerCase();
if (upper && lower) return true;
}
return false;
}
console.log(allCases('abc'));
console.log(allCases('ABC'));
console.log(allCases('abC'));
console.log(allCases('123'));
uj5u.com热心网友回复:
你在做什么只是将字符串转换为大写和小写。这是一个单衬解决方案。
const verifyString = (str)=> (/[a-z]/.test(str)) && (/[A-Z]/.test(str))
uj5u.com热心网友回复:
在toUpperCase
和toLowerCase
一次对整个字符串函式操作。
如果你在 js 终端上试试这个,你会看到:
"Hello World!".toUpperCase() === "HELLO WORLD!"
根据您的问题,我认为您想要的是逐个字符地检查。
您可以使用Array.from
将字符串转换为阵列,然后使用以下Array.some
方法检查任何字符是否满足给定条件:
const input = "Hello World!";
const containsUpperCase = Array.from(input).some((c) => c === c.toUpperCase());
参考:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some
(编辑)我意识到箭头函式语法可能对初学者不太友好,所以这里有一个替代方案:
function charIsUppercase(c) {
return c === c.toUpperCase();
}
const input = "Hello World!";
const containsUpperCase = Array.from(input).some(charIsUppercase);
uj5u.com热心网友回复:
letterCase == letterCase.toUpperCase()
实际上并不检查字符串中是否有大写字母,而是检查字符串中是否没有小写字母。因此,您的&&
表达式会检查字符串中是否没有小写或大写字母。
所以为了检查有小写和大写字母,你需要做
function lowercaseUppercase (letterCase) {
return !(letterCase == letterCase.toUpperCase() || letterCase == letterCase.toLowerCase());
}
或者
function lowercaseUppercase (letterCase) {
return letterCase != letterCase.toUpperCase() // has lowercase letters
&& letterCase != letterCase.toLowerCase(); // has uppercase letters
}
0 评论