2016-04-15 2 views
-1

Я делаю запрос ajax для получения текстового файла. Мне нужно прочитать этот текст в javascript.регулярное выражение в функции разделения Javascript

Текстовый файл выглядит так:


kjnggnfgnfkjg

как "боб"

АСР "АЛИСА"

fmdklfmdlkfk

как "Марк"

бс «Жюльен»

dfdlf ..


Мне нужно создать два массива, один с линии, которые начинаются с 'as' и второй с линии, которые начинаются с 'bs' слова. Каждому элементу массива не нужно иметь словоили 'bs', а также «». в этом случае:

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

Помогите мне пожалуйста?

+0

Делитесь кодом, которым вы пользовались? –

+0

Я просто попытался с данными, которые получаю от ajax-запроса: Я использую data.split ('' \ n "), чтобы читать каждую строку ... , но я не могу сделать выбор с помощью регулярного выражение ... Функция get() { $ .ajax ({url: "../ local/exampleText", dataType: "Text", success: 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"] 
Смежные вопросы