我有一个包含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中的序列的逻辑。
答案 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;
};