Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何查找子字符串与哪个值匹配_Javascript_String - Fatal编程技术网

Javascript 如何查找子字符串与哪个值匹配

Javascript 如何查找子字符串与哪个值匹配,javascript,string,Javascript,String,我想实现一个函数,用字符串返回匹配变量数组 比如说 str = 'abcSSSdefghEEEijSSSkEEElmnSSSEEEop'; matching = abcSSSvar1EEEijSSSvar2EEElmnSSSvar3EEEop; 函数应接受四个参数 str : main string matching : string with variables start : start of the var, in above case start = 'SSS'; end : end

我想实现一个函数,用字符串返回匹配变量数组

比如说

str = 'abcSSSdefghEEEijSSSkEEElmnSSSEEEop';
matching = abcSSSvar1EEEijSSSvar2EEElmnSSSvar3EEEop;
函数应接受四个参数

str : main string
matching : string with variables
start : start of the var, in above case start = 'SSS';
end : end of the var, in above case = 'EEE';
函数应返回数组返回键值映射

在上述情况下,应返回

{
  "var1" : "defgh",
  "var2" : "k",
  "var3" : ""
}

如何在javascript中有效地实现上述功能

是否有与
str
匹配相关的保证

此解决方案在假设提供的值与键的数量相同的情况下运行

/**
 * Extracts variables from the input string using the start and
 * end as splitters.
 */
var extractVariables = function(input, start, end) {
    var arr = [];
    var i = 0;
    while (i < input.length) {
        if (input.substring(i, i + start.length) == start) {
            var v = "";
            for (var j = i + start.length; j < input.length; j++) {
                if (input.substring(j, j + end.length) == end) {
                    arr[arr.length] = v;
                    break;
                }
                v += input[j];
            }
            i = j;
        } else {
            i++;
        }
    }
    return arr;
}

/**
 * Extracts keys from matching, values from str, and populates 
 * a map with the variables. The map will only have as many entries
 * as keys provided.
 */
var buildVarMap = function(str, matching, start, end) {
    var map = {};
    var values = extractVariables(str, start, end);
    var keys = extractVariables(matching, start, end);
    for (var k = 0; k < keys.length; k++) {
        map[keys[k]] = values[k];
    }
    return map;
}

var varMap = buildVarMap(
    "abcSSSdefghEEEijSSSkEEElmnSSSEEEop", 
    "abcSSSvar1EEEijSSSvar2EEElmnSSSvar3EEEop", 
    "SSS", 
    "EEE"
);
/**
*使用开始和结束键从输入字符串中提取变量
*以分裂结束。
*/
var extractVariables=函数(输入、开始、结束){
var-arr=[];
var i=0;
while(i

听起来很像家庭作业,告诉我们你做了什么,我已经通过了这个google diff pathalgo,但找不到如何使用它。。。或者如果我真的走对了路