2016-08-22 92 views
0

我试图与“喜”如何替换字符串在Javascript

我的JavaScript来取代'<p>hi</p>'

var obj = {item:{title: params.title,description: params.text, link: req.headers['origin']+"/blog/blog-description/"+params.blog_id, guid:req.headers['origin']+"/blog/blog-description/"+params.blog_id}}; 

var xml2js = require('xml2js');  
var builder = new xml2js.Builder(); 
var xml = builder.buildObject(obj); 
var modXml = xml.replace('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>', ''); 
var modXml = xml.replace(/<(?:.|\n)*?>/gm, '');   
var new_text = modXml; 

fs.readFile('public/feed.xml', function read(err, data) { 
    if (err) throw err; 
    var file_content = data.toString(); 
    var c = file_content.indexOf('</description>'); 
    var position = c + 14; 
    file_content = file_content.substring(position); 
    var file = fs.openSync('public/feed.xml','r+'); 
    var bufferedText = new Buffer(new_text+file_content); 
    fs.writeSync(file, bufferedText, 0, bufferedText.length, position); 
    fs.close(file); 
}); 

我不知道哪里出了问题可以有人建议帮助。

+1

那么什么问题,你整个运行?我在这里没有看到问题。 – Jacob

+0

而不是替换标题,只需调用'new xml2js.Builder({headless:true});' – baao

回答

1

xml2js用&lt;p&gt;(和</p>&lt;/p&gt;)替换您的<p>标记,因此您需要替换替换的字符串。此外,拨打Builder()headless: true选项 - 然后您不需要替换标头。以下作品:

var obj = {item:{title: '<p>foobarbaz</p>',description: "<p>foo</p>", link: "<p>bar</p>", guid:"<p>baz</p>"}}; 

var xml2js = require('xml2js'); 
var builder = new xml2js.Builder({ headless: true }); 
var xml = builder.buildObject(obj); 
var modXml = xml.replace(/&lt;p&gt;|&lt;\/p&gt;/gm, ''); 
console.log(modXml); 

输出:

<item> 
    <title>fobaba</title> 
    <description>foo</description> 
    <link>bar</link> 
    <guid>baz</guid> 
</item> 
+1

非常感谢,,,,,,, – MMR

+0

是否可以追加我描述的前100个单词。 – MMR

+0

当然,使用子字符串:str.substring(0,99) – baao

1

由于更换返回一个字符串对象,你可以简单地链上的呼叫:

你试过:

var modXml = xml.replace('<p>', '').replace("</p>",'');

我想你也能凝聚成一个正规表达。

1

,你既可以使用正则表达式剥离标签,或者使用图书馆等striptags

可选的正则表达式:

var text = '<p>aaa</p>'; 
 
console.log(text.replace(/<(?:.|\n)*?>/gm, ''));

striptags库可以用来去除所有标签,或只有特定标签:

var text = '<p>aaa</p>'; 
striptags(html); 
striptags(html, ['p']); 
+0

谢谢MoLow,但它说替换不定义 – MMR

+0

这意味着你的变量不是字符串。在你的情况下,尝试'xml.replace(/ <(?:.|\n)*?>/gm,'')' – MoLow

+0

仍然没有删除我将编辑代码请看看 – MMR

2

试试这个:

xml.split('<p>hi</p>').join('hi'); 
+0

我已经得到它,任何如何谢谢艾西瓦娅。 – MMR