我有一些代码,输出如下:几乎根据需要的JavaScript更换所有,但最后,同时保留原来的换行符
function replaceAllButLast(str, splitRegex, pOld, pNew) {
var parts = str.split(splitRegex)
if (parts.length === 1) return str
return parts.slice(0, -1).join(pNew) + pOld + parts.slice(-1)
}
var str = "fred\r\nfred\r\nfred\r\n"
var desiredResult = replaceAllButLast(str, /(?:\r?\n|\r)/, '\n', '\n+')
console.log(desiredResult)
结果。但是,代码假定正则表达式拆分操作正在拆分\ n,因此将其替换为\ n
但是,它实际上可能会拆分为\ r \ n(windows - 如示例中)或\ r (old macs)
有没有人有一些代码会给出与代码相同的输出,但是会保留原始换行符,同时在换行符后面加上+(最后一行除外)。
我正在使用纯香草JavaScript。
PS我必须使用正则表达式/(?:\r?\n|\r)/
PPS有没有必要使用.split()
。
真的很好回答thx - 甚至不知道替换可以使用函数 – danday74