【问题标题】:upperCase the first element of a string in JavaScriptJavaScript 中字符串的第一个元素大写
【发布时间】:2021-02-22 05:37:48
【问题描述】:

错误显示“AssertionError: 预期的‘永不放弃’完全等于‘永不放弃’” 而且我无法弄清楚为什么忽略字符串开头的空白。这是我的代码:

function letterCapitalize(str) {
  if (str === '') {
    return ''
  }
  let string = '' //array to string
  let word = str.split(' ')
  for (let i = 0; i < word.length; i++) {
    if (word[i] !== '') {
      string = string + word[i][0].toUpperCase() + word[i].slice(1, word[i].length) + ' '
    } else if (word[i] === '') {
      string = ' ' + string
    }
  }
  return string.slice(0, string.length - 1)
}

控制台日志示例包括:

let output1 = letterCapitalize('hello world');
console.log(output1); // "Hello World"
let output2 = letterCapitalize('javascript  is sexy ');
console.log(output2); // "Javascript  Is Sexy "

【问题讨论】:

  • 您的测试似乎需要在开头和结尾留一个空格。
  • 我不确定你指的是哪一行;
  • 在您的else if 中,您在(整个)字符串的开头附加了一个空格。您应该将其添加到字符串的末尾。 (就像你在if 中所做的那样。)
  • 请向我们展示测试用例的代码。您的测试似乎需要大写以外的其他内容。
  • @Ivar 恐怕测试结果仍然是“ AssertionError: expected ' NEVER GIVE UP' to deeply equal ' NEVER GIVE UP ' ”。问题是“NEVER”之后的双空格没有出现。也许用数组重写?

标签: javascript string uppercase splice


【解决方案1】:

您的测试似乎在末尾需要一个空格,如果您真的想将字符串大写,请尝试这个,或者分享您的测试用例代码以便我看看。

const capitalize = str => {
  if (!str) return "";
  return str
    .split(" ")
    .map(el => el[0].toUpperCase() + el.slice(1))
    .join(" ");
}

【讨论】:

  • 1.它以字符串类型返回。 2. 当给出空字符串时返回空字符串 3. 当给出 " " 时返回 " " 4. 当给出 'you can DO it' 时返回 "You Can Do It" 5. 当给出 ' nEVER  gIVE 时返回 ' NEVER  GIVE UP ' uP ' 给出 6. 当给出'you have a idea' 时返回'You Have A Idea'。 3,5 是显示错误的那些。 3 的错误代码是 AssertionError: expected '' to equal '' and 5 is 5. AssertionError: expected 'NEVER GIVE UP' to deeply equal 'NEVER GIVE UP'
  • 啊啊好吧,现在我明白了。
  • 您不应该删除任何空格。 No 5 显示错误,因为您的函数从末尾删除了一个空格。
  • 我想我可以通过添加 ' ' 来保留空间,就像我在 if 中所做的那样。但是,我无法弄清楚为什么我的代码中的双倍空格从未消失以及如何保留它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-23
  • 1970-01-01
  • 1970-01-01
  • 2018-03-17
  • 2010-11-04
  • 1970-01-01
  • 2019-08-05
相关资源
最近更新 更多