我想撰寫一個函式來檢查字串是否包含小寫和大寫字母。如果兩者都存在,它應該回傳真,如果缺少一個,它應該回傳假。
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
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/397566.html
下一篇:對于帶有宣告的if陳述句,是否應該將returnerr放入else中,或者避免這種風格并在Golang中縮小return?
