嗨=)我有一些我正在努力的代码。我有一个函数来替换特定的html字符值,如标签或新行,但它似乎不能很好地工作。
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;
}
这是我尝试删除新行字符并将其替换为&#34; \ n&#34;这样我就可以用JSON格式存储它。它达到text[i] = "\n"
所指的位置,但实际上并未将此字符设置为"\n"
。谁能告诉我我做错了什么?谢谢。
答案 0 :(得分:2)
&#34; \ n&#34;是一个换行符。您已经用已经存在的内容替换它们,保持字符串不变。如果你想要实际的字符\和n,你需要屏蔽反斜杠\\n
并插入它。
答案 1 :(得分:0)
我认为你最好在这里使用一些正则表达式。试试这段代码(我还故意将你的函数重命名为更多描述名称):
function breakOnTab (string) {
return string.replace(/\t/g, '\r\n')
}
此正则表达式查找所有制表符\t
,并用包含转义回车符和新行的字符串替换它们。
答案 2 :(得分:0)
看来你正在取代&#34; \ n&#34;与&#34; \ n&#34;。替换&#39; \ n&#39;你需要通过添加额外的&#39; \&#39;来逃避它。或者&#39; \ n&#39;
答案 3 :(得分:0)
首先:HTML字符不存在...
第二:我不明白为什么你做text = text.split("");
,你会迭代一个数组而不是一个字符串,花费时间和记忆......
如果要将html格式的文本重写为纯文本,可以执行以下操作:
var replaceHTMLCharacters = function(text){
text = text.replace(/<br\s*\/?>/g,'\n');
console.log(text);
return text;
}
答案 4 :(得分: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 text2");