【问题标题】:How to replace string in Javascript如何在Javascript中替换字符串
【发布时间】:2016-08-22 06:37:38
【问题描述】:

我正在尝试将'<p>hi</p>' 替换为“hi”

我的 JavaScript:

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);
});

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

【问题讨论】:

  • 那么您遇到了什么问题?我在这里没有看到任何问题。
  • 不替换头部,直接调用new xml2js.Builder({headless: true});

标签: javascript node.js replace xml2js


【解决方案1】:

试试这个:

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

【讨论】:

    【解决方案2】:

    xml2js 将您的&amp;lt;p&amp;gt; 标记替换为&amp;lt;p&amp;gt;(并将&amp;lt;/p&amp;gt; 替换为&amp;lt;/p&amp;gt;),因此您需要替换替换的字符串。此外,使用headless: true 选项调用Builder() - 然后您不需要替换标题。以下作品:

    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>
    

    【讨论】:

    • 非常感谢 ,,,,,,,,
    • 是否可以只附加我描述的前 100 个字。
    • 当然,使用子字符串:str.substring(0, 99)
    • 谢谢,如何在 xml 中仅替换 标记
    【解决方案3】:

    由于 replace 返回一个字符串对象,您可以简单地链接调用:

    你试过了吗:

    var modXml = xml.replace('&lt;p&gt;', '').replace("&lt;/p&gt;",'');

    我想你也可以把它压缩成一个正则表达式。

    【讨论】:

      【解决方案4】:

      您可以使用正则表达式来去除标签,或者使用诸如striptags 之类的库

      可选的正则表达式:

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

      striptags 库可用于去除所有标签,或仅去除特定标签:

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

      【讨论】:

      • 谢谢你,MoLow 但它说替换没有定义
      • 这意味着您的变量不是字符串。在你的情况下,试试xml.replace(/&lt;(?:.|\n)*?&gt;/gm, '')
      • 仍然没有删除我将编辑代码请看一下
      • 我没有发现任何问题。也许您要替换的 html 标签在 file_content 中,而不是在 new_text 中?
      • Molow,我替换了这里的步骤,但没有工作 var file_content = data.toString(); var file_content = file_content.replace(//gm, ''); var c = file_content.indexOf('');
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-23
      • 2015-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多