2016-11-11 47 views
0

嗨=)我有一些代碼,我掙扎着。我有一個函數來替換特定的html字符值,如標籤或新行,但它似乎不工作得很好。如何替換Javascript中的新行字符?

var replaceHTMLCharacters = function(text){ 
    text = text.split(""); 
    for(var i = 0; i < text.length; i++){ 
     if(text[i].charCodeAt(0) == 10){ 
      text[i] = "\n"; 
     } 
    } 
    text = text.join(""); 
    console.log(text); 
    return text; 
} 

這是我試圖刪除新行字符,並以「\ n」取代它,這樣我可以將其存儲在一個JSON格式的例子。它達到了說text[i] = "\n"的點,但是實際上並沒有將這個字符設置爲"\n"。誰能告訴我我做錯了什麼?謝謝。

+0

你試過\ r \ n嗎? –

+0

「\ n」*是一個換行符。你用已有的東西替換它們,保持字符串不變。如果你想要實際的字符\和n,你需要屏蔽反斜槓「\\ n」並插入它。 –

+0

@ChrisG啊是的,這對我來說是非常感謝你。發佈爲答案我將標記爲解決方案 – Pixelknight1398

回答

1

「\ n」 是一個換行符。你用已有的東西替換它們,保持字符串不變。如果你想要實際的字符\和n,你需要掩蓋反斜槓\\n並插入它。

0

我認爲你最好在這裏使用一些正則表達式。試試這個代碼(我也特意改名爲你的函數有一個多一點描述名稱):

function breakOnTab (string) { 
    return string.replace(/\t/g, '\r\n') 
} 

此正則表達式查找所有的製表符\t,並與包括逃脫回車和新行的字符串替換它們。

0

看來你是用「\ n」替換「\ n」。要替換「\ n」,你將需要添加額外的「\」或「\ n」

0

首先要逃避它:HTML字符行得存在......

二:我不知道明白你爲什麼這樣做text = text.split("");,你會遍歷數組,而不是一個字符串,花費時間和記憶......

第三:「\ n」 charCode爲10 ...

如果你想重寫文本在html上格式化爲純文本,你可以這樣做:

var replaceHTMLCharacters = function(text){ 
    text = text.replace(/<br\s*\/?>/g,'\n'); 
    console.log(text); 
    return text; 
} 
0

你可以使用像這樣用\ n和\ t ..

你可以檢查也籤Difference between \n and \r?

var replaceHTMLCharacters = function(text) { 
 
    var reg = new RegExp(/(\r\n?|\n|\t)/g); 
 
    var ntext = text.replace(reg, "-"); 
 
    console.log(ntext); 
 
    return text; 
 
} 
 

 
replaceHTMLCharacters(`newLine 
 
Text1`) 
 
replaceHTMLCharacters("Tab \t text2");