2016-08-22 58 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