簡體   English   中英

如何在JS中檢查字符串是否同時包含小寫和大寫字母?

[英]How do I check if a string contains both lowercase and uppercase letters in JS?

我想寫一個 function 來檢查一個字符串是否包含小寫大寫字母。 如果兩者都存在,則應返回 true,如果缺少任何一個,則應返回 false。

function lowercaseUppercase (letterCase) {
  
  if (letterCase == letterCase.toUpperCase()) 
  {
  return true; 
} else {
  return false; 
};  
}

console.log(lowercaseUppercase("GGG"))

如果我使用大寫字母,這將返回true ,如果我將小寫字母傳遞給這個 function,則返回false 如果我用letterCase.toUpperCase()代替letterCase.toLowerCase()它就可以了。 我希望 function 檢查兩個參數是否正確。

我可以使用&&運算符來檢查兩者嗎?

function lowercaseUppercase (letterCase) {
  
  if (letterCase == letterCase.toUpperCase() &&
      letterCase == letterCase.toLowerCase()) 
  {
  return true; 
} else {
  return false; 
};  
}

這不起作用並為大寫、小寫和兩者的組合返回 false。

如果兩者都存在,它希望它返回 true,如果缺少任何一個,它應該返回 false。

誰能指出我哪里出錯了? :)

您可以使用正則表達式進行檢查,如果兩種情況都為true true

方法:

 function allCases(string) { const upper = /[AZ]/.test(string), lower = /[az]/.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'));

你在做什么只是將字符串轉換為大寫和小寫。 這里有一個單線解決方案。

const verifyString = (str)=> (/[a-z]/.test(str)) && (/[A-Z]/.test(str))

toUpperCasetoLowerCase函數一次對整個字符串進行操作。

如果你在 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/來自

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some

(編輯)我意識到箭頭 function 語法可能對初學者不太友好,所以這里有一個替代方案:

function charIsUppercase(c) {
    return c === c.toUpperCase();
}

const input = "Hello World!";
const containsUpperCase = Array.from(input).some(charIsUppercase);

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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM