在JavaScript中拆分字符串并获取适当的值

在JavaScript中拆分字符串并获取适当的值,javascript,Javascript,我有一个字符串,其中| | |表示它旁边是目录| |表示允许用户访问此目录,|表示分配给这些用户的文件如下 我需要从这个字符串中找到特定用户的分配文件名。我曾尝试拆分字符串并将值赋给数组,但无法获得所需的结果 这是字符串: ||||根124124; | |根| | | 124| 124|124| 124| 124 | 124|根| adil001、K11285C、km11285c、KMM61051、KM61051、KM61051、K61051、K6101六六六六千千千千千千自己、K6101六六六

我有一个字符串,其中
| | |
表示它旁边是目录
| |
表示允许用户访问此目录,
|
表示分配给这些用户的文件如下

我需要从这个字符串中找到特定用户的分配文件名。我曾尝试拆分字符串并将值赋给数组,但无法获得所需的结果

这是字符串:

||||根124124; | |根| | | 124| 124|124| 124| 124 | 124|根| adil001、K11285C、km11285c、KMM61051、KM61051、KM61051、K61051、K6101六六六六千千千千千千自己、K6101六六六六六六六一、K610152、K6101六六六六六六六一、K610五五、K610六六一、K610六一、K61六六九、K610六六九、K61六六九、K610六六一、K61六六六六九、K61六六九、K61六六一、K61六六九、K610六九、K61六六六六六adil001、km11285c、km61052、km61639c、adil001、km11285c、,第二,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第六,第km11285c、km61052、km61639c、,adil001,km11285c,km61052,km61639c,adil001,km11285c,km61052,km61639c,adil001,kl04707c,km47389,km58184,km61052,kq61023c,kq61023c,kq61023c,KQ20140528164643.xlsx,TESTASK20140528140033.xlsx,TESTASK1,TESTASK1,TESTASK20140528135944.xlsx,TESTU20140528140033.sx

以下是我的尝试:

function getData() {
    var user = 'km11285c';
    var value = "||||Root|||adil001,km11285c,km61052,km61639c,adil001,kl04707c,km47389,km58184,km61052,kq61023c,adil001,km11285c,km61052,km61639c,||LimitTest_20140528164643.xlsx,testTask2_20140528140033.xlsx,||||1400842226669|||adil001,km11285c,km61052,km61639c,adil001,kl04707c,km47389,km58184,km61052,kq61023c,adil001,km11285c,km61052,km61639c,adil001,km11285c,km61052,km61639c,adil001,km11285c,km61052,km61639c,||LimitTest_20140528164643.xlsx,testTask2_20140528140033.xlsx,testTask1_20140528135944.xlsx,testTask2_20140528140033.xlsx,||||1401191909489|||adil001,km11285c,km61052,km61639c,adil001,kl04707c,km47389,km58184,km61052,kq61023c,adil001,km11285c,km61052,km61639c,adil001,km11285c,km61052,km61639c,adil001,km11285c,km61052,km61639c,adil001,km11285c,km61052,km61639c,adil001,kl04707c,km47389,km58184,km61052,kq61023c,||LimitTest_20140528164643.xlsx,testTask2_20140528140033.xlsx,testTask1_20140528135944.xlsx,testTask2_20140528140033.xlsx,LimitTest_20140528164643.xlsx,";
    var users = null;
    var files = null;
    var Dir = value.split("||||");
    var arrayLength = Dir.length;
    for (var i = 0; i < arrayLength; i++) {
        users = Dir[i].split("|||");
    }

    return users;

}

console.log(getData());
函数getData(){ var user='km11285c'; var值="||||根124124; | |根| | | 124| 124|124| 124| 124 | 124|根| adil001、K11285C、km11285c、KMM61051、KM61051、KM61051、K61051、K6101六六六六千千千千千千自己、K6101六六六六六六六一、K610152、K6101六六六六六六六一、K610五五、K610六六一、K610六一、K61六六九、K610六六九、K61六六九、K610六六一、K61六六六六九、K61六六九、K61六六一、K61六六九、K610六九、K61六六六六六adil001,km11285c,km61052,km61639c,adil001,km11285c,km6第二、第二、第二、第二、第二、第二、第二、第二、第二、第二、第二、第二、第六、第二、第二、第二、第二、第二、第二、第二、第二、第二、第二、第二、第二、第二、第二、第二、第二、第二、第二、第二、第六、第六、第六、第六、第六、第六、第六、第六、第六、第六、第六、第六、第二、第六、第六、第六、第六、第六、第六、第六、第六、第六、第六、第六、第六、第六、第六、第六、第六、第六、第六、第六、第六、第六、第六、第六、第六、第六、第六、第六、第六、第六、第六、第六、第六、第六、第六、第六、第adil001、km11285c、km61052、km61639c、adil001,km11285c,km61052,km61639c,adil001,km11285c,km61052,km61639c,adil001,kl04707c,km47389,km58184,km61052,kq61023c,kq61023c,|限制测试20140528164643.xlsx,测试任务220140528140033.xlsx,测试任务120140528135944.xlsx,测试任务220140528140033.xlsx,限制测试20140528164643.xlsx,“; var用户=null; var文件=null; var Dir=value.split(“| | | | |”); var arrayLength=方向长度; 对于(变量i=0;i

我稍微更改了您的JSFIDLE示例,因此您可能需要在此处或此处更改代码,但类似的操作应该可以:

function buildTree(data) {
    var tree = [];
    var dirs = data.split("||||");
    // Remove the first entry in the array, since it should be empty.
    dirs.splice(0, 1);

    for (var i = 0; i < dirs.length; ++i) {
        var tempArray = dirs[i].split("|||");
        var dirName = tempArray[0];
        var usersAndFiles = tempArray[1];
        tempArray = usersAndFiles.split("||");
        var users = tempArray[0];
        var files = tempArray[1];
        var treeDir = { name: dirName };
        treeDir.users = users.split(",");
        treeDir.files = files.split(",");
        tree.push(treeDir);
    }
    return tree;
}

function getData() {
    var user = 'km11285c';
    var value="||||Root|||adil001,km11285c,km61052,km61639c,adil001,kl04707c,km47389,km58184,km61052,kq61023c,adil001,km11285c,km61052,km61639c,||LimitTest_20140528164643.xlsx,testTask2_20140528140033.xlsx,||||1400842226669|||adil001,km11285c,km61052,km61639c,adil001,kl04707c,km47389,km58184,km61052,kq61023c,adil001,km11285c,km61052,km61639c,adil001,km11285c,km61052,km61639c,adil001,km11285c,km61052,km61639c,||LimitTest_20140528164643.xlsx,testTask2_20140528140033.xlsx,testTask1_20140528135944.xlsx,testTask2_20140528140033.xlsx,||||1401191909489|||adil001,km11285c,km61052,km61639c,adil001,kl04707c,km47389,km58184,km61052,kq61023c,adil001,km11285c,km61052,km61639c,adil001,km11285c,km61052,km61639c,adil001,km11285c,km61052,km61639c,adil001,km11285c,km61052,km61639c,adil001,kl04707c,km47389,km58184,km61052,kq61023c,||LimitTest_20140528164643.xlsx,testTask2_20140528140033.xlsx,testTask1_20140528135944.xlsx,testTask2_20140528140033.xlsx,LimitTest_20140528164643.xlsx,";
    var tree = buildTree(value);
    for (var i = 0; i < tree.length; ++i) {
        var dir = tree[i];
        if (dir.users.indexOf(user) >= 0) {
            console.log("User '" + user + "' has access to directory '" + dir.name + "', which contains these files: " + dir.files.join(","));
        }
    }
}

getData();
函数构建树(数据){
var-tree=[];
var dirs=data.split(“| | | | |”);
//删除数组中的第一个条目,因为它应该为空。
直接拼接(0,1);
对于(变量i=0;i=0){
console.log(“用户”“+User+”'有权访问目录”“+dir.name+”,其中包含以下文件:“+dir.files.join”“,”);
}
}
}
getData();