【问题标题】:Why does my code fail to pass the test of removing spaces from string in Javascript?为什么我的代码无法通过 Javascript 中从字符串中删除空格的测试?
【发布时间】:2020-06-25 13:07:07
【问题描述】:

大家好!我是编码新手,我没有通过这个测试。我需要为这个字符串编写代码:

'<h2>         Lost In Space</h2>'

改成这个字符串(基本上去掉表头和正文之间多余的空格):

'<h2>Lost In Space</h2>'

我编写的代码看起来像这样,在我的编辑器中它似乎返回了正确的输出,但由于某种原因,它在通过在线测试时失败了

function markdownParser(markdown) {
    let arr = markdown.trim().split(' ');
    let firstItemInArray = arr[0]; 
    if(firstItemInArray[0] === '<') {
        arr.shift(); 
        let newString = arr.join(' '); 
        let trimmedString = newString.trim(); 
        return `${firstItemInArray}${trimmedString}`
      } else {
        return markdown;
    }
}

知道为什么会这样吗?我的错误在哪里?

测试失败: edge_cases

expected '<h2>         Lost In Space</h2>' to deeply equal '<h2>Lost In Space</h2>'

【问题讨论】:

  • 请提供失败的测试用例
  • 这个具体的例子似乎通过了,但也许在线测试工具会针对更大的测试数据集运行你的 sn-p,并且它不能处理其他一些极端情况?
  • 是的,似乎是这样。我只收到错误消息:edge_cases 预期 '

    Lost In Space

    ' 完全等于 '

    Lost In Space

    ' 不确定如何通过此测试
  • 你能把这个失败的例子正确地格式化在你的问题中吗?
  • 我刚试过你的“失败测试”,它确实通过了:markdownParser('&lt;h2&gt; Lost In Space&lt;/h2&gt;') === '&lt;h2&gt;Lost In Space&lt;/h2&gt;' 回馈true。

标签: javascript arrays string string-parsing


【解决方案1】:

有点作弊,有点作弊,但可靠。可以更改为仅修剪文本节点。名称暗示它是 Markdown,所以这实际上可能不起作用?

str=`<h2>     test</h2>`

const div = document.createElement('div')
div.innerHTML=str
div.querySelectorAll('*').forEach(x=>x.innerHTML=x.innerHTML.trim())

console.log(div.innerHTML)
&lt;div id="div"&gt;&lt;/div&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多