我发出ajax请求来接收文本文件。 我需要在javascript中阅读这篇文章。
Text文件是这样的:
kjnggnfgnfkjg
as“bob”
bs“alice”
fmdklfmdlkfk
as“Marc”
bs“Julien”
dfdlf ..
我需要创建两个数组,一个是以'as'
开头的行,另一个是以'bs'
个单词开头的行。数组的每个元素都不需要'as'
或'bs'
字以及“”。在这种情况下:
a=[bob,Marc] and b=[alice,julien]
你能帮我吗?
答案 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)
将返回与谓词匹配的项的子列表。这里我们使用lambda函数作为谓词,只有当行匹配模式时才会返回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"]