我有一些代碼,輸出如下:幾乎根據需要的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