如何检查从js中的文件数据读取的数组中的数据序列

时间:2017-05-17 10:04:04

标签: javascript arrays node.js text-parsing

我有一个包含usfm数据USFM_file_link的文件,并且在其中,我使用每行中的标记创建了这样的数组

['id','c','p','v','p','v','v','v','p','v','v','v','v','p','v','v','v','v','p','v','v','v','c','p','v','p','v','v','v' ]

我想检查此文件中每行的标记序列。所以序列的条件是

  

每个章节必须在第一个\ v标记之前至少有一个\ p标记。

这意味着对于'c'元素之后的每个第一个'v'元素都需要'p'元素,除非该文件是不是正确的形式。根据我的理解,我认为这是文本解析,但不知道如何检查此问题的序列。任何帮助,将不胜感激。我并没有要求帮助我编写代码,而是在从这样的文件中读取和解析时如何检查JavaScript中的序列的逻辑。

1 个答案:

答案 0 :(得分:1)

var list = ['id', 'c', 'p', 'v', 'p', 'v', 'v', 'v', 'p', 'v', 'v', 'v', 'v', 'p', 'v', 'v', 'v', 'v', 'p', 'v', 'v', 'v', 'c', 'p', 'v', 'p', 'v', 'v', 'v'];

if (isPatternFound(list, "c", "v", "p")) {
    console.log("Found")
} else {
    console.log("Not found")
}

function isPatternFound(inputList, startValue, followedValue, followedByValue) {
    var cIdx = inputList.indexOf(startValue), isFound=false;
    while (cIdx > -1) {
        inputList.splice(0, inputList.indexOf(startValue));
        inputList.splice(0, inputList.indexOf(followedValue));
        if (inputList[1] == followedByValue) {
            isFound= true;
            return isFound;
        } else {
            isFound= false;
        }
        cIdx = inputList.indexOf(startValue);
    }
    return isFound;
};