拆分String并在JavaScript中获取适当的值

时间:2014-05-30 09:51:35

标签: javascript

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

我需要从此字符串中查找特定用户的已分配文件名。我试图拆分字符串并将值赋给数组,但我无法得到我正在寻找的结果。

这是字符串:

  

|||| |||根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,

这是我的尝试:

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());

jsFiddle

1 个答案:

答案 0 :(得分:0)

我改变了你的jsfiddle示例,所以也许你需要在这里和那里更改代码,但这样的事情应该有效:

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();