2016-11-11 17 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");