2017-06-15 1 views
2

J'ai un fichier avec les données comme suit,Comment mettre à jour les données dans un fichier dans une position particulière dans js

Test.txt, 
    <template class="get" type="amp-mustache"> 
     <div class="divcenter"> 
/////Need to append data at this point///// 
     </div> 
    </template> 

J'ai les données comme ci-dessous

[ 
    {'text':'<p>grapes</p>'}, 
    {'text':'<p>banana</p>'}, 
    {'text':'<p>orange</p>'}, 
    {'text':'<p>apple</p>'}, 
    {'text':'<p>gua</p>'} 
] 

Après avoir ajouté les données devrait être,

<template class="get"> 
     <div class="divcenter"> 
     <p>grapes</p> 
     <p>banana</p> 
     <p>orange</p> 
     <p>apple</p> 
     <p>gua</p> 
     </div> 
    </template> 

Mon code,

fs.readFile(Test.txt, function read(err, data) { 
    if (err) { 
      throw err; 
    } 
    var file_content = data.toString(); 
    var c = file_content.indexOf(' <div class="divcenter">'); 
}); 

Mais comment puis-je ajouter après avoir trouvé l'index?

+0

Essayez d'utiliser un analyseur comme https://github.com/tmpvar/jsdom et pourquoi avez-vous tagué angularjs :) – codtex

+0

Salut codtex comme cela lié à js, certains experts comme pourraient venir former angulaire js ... :) –

Répondre

0

Ce n'est pas la façon la plus élégante en utilisant seulement substr

var needle = '<div class="divcenter">'; 
var newString = file_content.substr(0, c + needle.length) 
    + '__NEW_STRING__' 
    + file_content.substr(needle.length - 1); 

Edit:

Une façon plus élégante consiste à traverser la chaîne comme DOM en utilisant cheerio.

0

Vous pouvez faire comme ceci:

  • trouver l'index où vous souhaitez insérer votre chaîne
  • tranche la chaîne source et insérez une nouvelle chaîne

    fs.readFile(Test.txt, function read(err, data) { 
        if (err) { 
         throw err; 
        } 
        var file_content = data.toString(); 
        var str = "<p>grapes</p> 
          <p>banana</p> 
          <p>orange</p> 
          <p>apple</p> 
          <p>gua</p>"; 
        var idx = file_content.indexOf('<div class="divcenter">') + '<div class="divcenter">'.length; 
        var result = file_content.slice(0, idx) + str + file_content.slice(idx); 
    }); 
    
0

Pourquoi ne pas faire en jquery.

utilisation pour la boucle de le faire comme ceci:

var uiDiv = $(".divcenter"); 
for(var i=0; i<data.length; i++){ 
    uiDiv.append("<p>'"+data[i]+"'</p>"); 
} 

espérons que cela fonctionne.