此函数循环遍历字符串数组。如果字符串不是以#
开头,则会使用p
标记。如果字符串的前一个字符串是#
或* * *
,则其中包含p
标记,其中包含类ni
function replaceParagraphs(data) {
data = data.split('\n\n')
for (var i = 0; i < data.length; ++i) {
if (data[i].match(/^[^#]/g)) {
var content = data[i].replace(/\n(?=\w)/g, ' ').replace(/\n(?=$)/g, '')
if (data[i - 1].match(/^#/g) || data[i - 1] === "* * *") {
data[i] = '<p class="ni">' + content + '</p>'
} else {
data[i] = '<p>' + content + '</p>'
}
}
}
data = data.join('\n\n')
return data
}
但似乎没有考虑data[i - 1] === "* * *"
,因为我最终输出了这样的输出:
## Test
<p class="ni">Lorem “ipsum?” dolor ‘sit!’ amet</p>
<p>Consetetur eirmod</p>
<p>* * *</p>
<p>“Ipsum?” “‘dolor’” sit! amet, consetetur eirmod tempor—invidunt ut labore</p>
可能是什么问题?
修改
哦,基于答案和评论,我意识到这是因为代码产生了<p>* * *</p>
我该怎么做才能防止这种情况发生?
答案 0 :(得分:1)
因为您在上一步中将* * *
替换为<p>* * *</p>
。
条件data[i - 1].match(/^#/g) || data[i - 1] === "* * *"
在第一次迭代时才可能成立。
考虑写一个新的数组,为了清晰起见并解决这样的问题。