2016-09-06 24 views
0

使用nodejs,我需要提取兩個不同字符之間的所有字符串,並將它們存儲在數組中以供將來使用。 例如,考慮一個文件,其中包含具有以下內容的文件。NODEJS:提取兩個不同字符之間的字符串並將它們存儲在數組中

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

我需要提取的話:城市用戶,並將它們放置在一個數組。一般來說,我希望「和/」之間的詞

+0

我非常新的NodeJS和JavaScript。我正在使用這個練習。我發現這樣做的方式是使用匹配方法。但是我沒有在正確的分隔符 –

+0

處添加你的失敗嘗試的問題,所以我們有一個共同點談論 – Thomas

+1

你的文件是否實際上包含JSON?或者是YAML?解析它。 – Bergi

回答

0

這應該工作。

"(.+?)\/" 
  1. 「前述
  2. 1個或多個字符(非貪婪)
  3. 隨後/」

REGEX101

+0

謝謝,這非常有幫助。但是,我不希望這些字符包含在子字符串中 –

+0

您想從該JSON中輸出什麼內容? – abdulbarik

+0

如果將REGEX更改爲(?:「)(。+? )(?:\ /「)」等等在非捕捉組中。如果那是你想要的。 – tk78

2

Bergi提到在一個評論,這看起來可疑地類似於JSON(javascript object notation。)所以我會寫我的答案,假設它是。對於當前的例子是有效的JSON,它需要這樣的內部對象的括號:

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

如果您解析這一點:

var parsed_json = JSON.parse(json_string); 

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

然後,所有你必須做的就是給陣列:

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

並修復惱人的拖尾斜槓我們重新映射數組:

// .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('/' , ''); 
} 

現在結尾的斜槓都不見了:

console.log(arr); 
相關問題