2016-09-06 2 views
0

Mit Nodejs muss ich ALLE Zeichenfolgen zwischen zwei Zeichen unterscheiden, die unterschiedlich sind, und speichern Sie sie in einem Array für zukünftige Verwendung. Betrachten Sie beispielsweise eine Datei, die eine Datei mit dem folgenden Inhalt enthält.NODEJS: Zeichenfolgen zwischen zwei verschiedenen Zeichen extrahieren und in einem Array speichern

"type":"multi", 
"folders": [ 
    "cities/", 
    "users/" 
] 

Ich brauche die Worte zu extrahieren: Städte und Benutzer, und sie in einem Array platzieren. Im Allgemeinen möchte ich die Wörter zwischen "und /"

+0

Ich bin sehr neu zu NodeJS und Javascript. Ich benutze das als Übung. Ich habe herausgefunden, dass die Methode dafür verwendet wird. Aber ich scheitere die richtigen Trennzeichen –

+0

Könnten Sie Ihren fehlgeschlagenen Versuch zu der Frage hinzufügen, so haben wir eine gemeinsame Grundlage zu sprechen – Thomas

+1

Enthält Ihre Datei tatsächlich JSON? Oder ist das YAML? Analysiere es. – Bergi

Antwort

0

Dies sollte funktionieren.

"(.+?)\/" 
  1. "vorhergehenden
  2. 1 oder mehr Zeichen (nicht gierige)
  3. gefolgt von /"

REGEX101

+0

Danke, das ist sehr hilfreich. Dies extrahiert jedoch das "und das/mit den Strings. Aber ich möchte nicht, dass diese Zeichen mit den Teilstrings enthalten –

+0

Welche Ausgabe genau Sie wollen von diesem JSON? – abdulbarik

+0

Wenn Sie die REGEX zu (?:") (. +?) (?: \/") the" usw. sind in nicht-einfangenden Gruppen. Wenn es das ist was du willst. – tk78

2

Wie Bergi in einem Kommentar erwähnt, folgt aussieht verdächtig ähnlich zu JSON (javascript object notation.) Also werde ich meine Antwort schreiben, vorausgesetzt, dass es ist. Für Ihr aktuelles Beispiel gültig JSON sein, muss es in objekt Klammern so sein:

{ 
    "type": "multi", 
    "folders": [ 
     "cities/", 
     "users/" 
    ] 
} 

Wenn Sie diese analysieren:

var parsed_json = JSON.parse(json_string); 

// You could add the brackets yourself if they are missing: 
var parsed_json = JSON.parse('{' + json_string + '}'); 

Dann alles, was Sie tun müssen, um das Array zu erhalten :

var arr = parsed_json.folders; 
console.log(arr); 

Und das lästige Hinter beheben schlitzt wir das Array neu zuordnen:

// .map calls a function for every item in an array 
// And whatever you choose to return becomes the new array 
arr = arr.map(function(item){ 
    // substr returns a part of a string. Here from start (0) to end minus one (the slash). 
    return item.substr(0, item.length - 1); 

    // Another option could be to instead just replace all the slashes: 
    return item.replace('/' , ''); 
} 

Nun werden die folgenden Schrägstriche weg:

console.log(arr); 
Verwandte Themen