使用.toUpperCase检查上部平齐度

Using .toUpperCase to check for upper-caseness

本文关键字:toUpperCase 检查 使用      更新时间:2023-09-26

我的程序将字符串中的单词"before"替换为单词"after"。我想我可能用错了.toUpperCase和.toLowerCase。我可以使用.toUpperCase来检查上大小写吗?还是只能使用它来分配下大小写?我已经发布了我的短程序。我对它的工作方式进行了全面的评论,然后给出了预期结果和实际结果。

// Params are string, word to be removed, new word to replace removed word.
function myReplace(str, before, after) {
  var afterCap;
  var newString;
  // Uppercase first letter of after, add rest of word.
  // afterCap is then capitalized after.
  afterCap = after[0].toUpperCase() + after.slice(1);
  // If before is capitalized,
  if (before[0].toUpperCase()) {
    // Replace with capitalized after.
    newString = str.replace(before, afterCap);
  }
  // If before not-capitalized,
  else if (before[0].toLowerCase()) {
    // Replace with lowercase after.
    newString = str.replace(before, after);
  }
  console.log(newString);
}
myReplace("Let us go to the store", "store", "mall");
// Should return "Let us go to the mall"
// Is in fact returning "Let us go to the Mall"

为什么小写单词"store"被大写单词"Mall"取代?

toUppercase返回字符串,而不是布尔值

您的代码实际上并没有检查第一个字母是否为大写,只是将它们翻译成大写并检查是否为真。如果字符串不是空的,则结果将是真的,并且第一个块将被执行,如果它是空的则结果将是空字符串,这是错误的,并且什么都不执行

javascript中的Truthy值都是的值,除了false、0、null、undefined和NaN请参阅此处的MDN文章了解更多信息

更改此

// If before is capitalized,
if (before[0].toUpperCase()) {
// Replace with capitalized after.
    newString = str.replace(before, afterCap);
}

到这个

// If before is capitalized,
if (before[0].toUpperCase() === before[0]) {
// Replace with capitalized after.
    newString = str.replace(before, afterCap);
}

第二个else-if语句可以翻译成其他语句,将您的代码转换为以下内容:

// If before is capitalized,
if (before[0].toUpperCase() === before[0]) {
    // Replace with capitalized after.
    newString = str.replace(before, afterCap);
} else {
    // If before not-capitalized,
    // Replace with lowercase after.
    newString = str.replace(before, after);
}

你可以通过使用三元条件赋值算子来进一步减少它

 newString = str.replace(before, 
                         before[0].toUppercase() === before[0] ? afterCap : after 
             );

这是检查给定字符串(或字符)是否为大写的方法

function isUpperCase(str) {
    return str === str.toUpperCase();
}