2016-04-15 6 views
-1

テキストファイルを受け取るようにajaxリクエストを行います。 私はこのテキストをjavascriptで読む必要があります。Javascriptの分割関数の正規表現

テキストファイルは次のようである: "ボブ"

BS "アリス" "マルク" として

fmdklfmdlkfk

として


kjnggnfgnfkjg

BS「ジュリアン」

dfdlf ..


は、私は2つのアレイ、'as'で始まり、'bs'単語で始まる行と第二行のものを作成する必要があります。配列のすべての要素は、'as'または'bs'という単語と ""を持つ必要はありません。この場合:

a=[bob,Marc] and b=[alice,julien] 

お願いします。

+0

試したコードを共有してください。 –

+0

私はちょうど私がajaxリクエストから受け取ったデータを試しました: 私はすべての行を読むためにdata.split( '' \ n ")を使っています... しかし、私は定期的にselectを行うことができません式... ファンクションget(){ $ .ajax({url: "../ local/exampleText"、 dataType: "Text"、 成功:function(data){b = data.split( " \ n "); console.log(data)}}); } – raoen

+0

コードを共有して試した正規表現を教えてください。 –

答えて

1

あなたが行のテキストを分割したら、あなたはそれらのフィルタリングとマッピングすることができます:

var lines = t.split('\n'); 
var asPattern = /^as \"(\w+)\"$/; 
var bsPattern = /^bs \"(\w+)\"$/; 
a = lines.filter(l => l.match(asPattern)) 
     .map(l => l.replace(asPattern, "$1")); 
b = lines.filter(l => l.match(bsPattern)) 
     .map(l => l.replace(bsPattern, "$1")); 

list.filter(predicate)は、述語に一致する項目のサブリストを返します。ここでは、述語としてラムダ関数を使用します。これは、行がパターンと一致する場合にのみtrueを返します。

>lines 
["kjnggnfgnfkjg", "", "as "bob"", "", "bs "alice"", "", "fmdklfmdlkfk", "", "as "Marc"", "", "bs "Julien"", "", "dfdlf"] 
>lines.filter(l => l.match(/^as \"(\w+)\"$/)) 
["as "bob"", "as "Marc""] 

list.map(transformationFunction)初期リストの各要素に対して変換関数を適用した結果のリストを返します。ここでは、同じパターンを再利用し、その最初のグループを代替として使用します。

>filteredLines 
["as "bob"", "as "Marc""] 
>filteredLines.map(l => l.replace(/^as \"(\w+)\"$/, "$1")) 
["bob", "Marc"]