从字符串中拆分并返回值的 Javascript 函数

标签 javascript

我正在尝试获取某个值。我是 javascript 的新手,我不明白为什么这不起作用。

如果我解析“kid_2”,我应该得到“kostas”。而不是“Kostas”,我总是得到“02-23-2000”。所以我在循环中一定有逻辑问题,但我真的卡住了。

function getold_val(fieldname,str){

  var chunks=str.split("||");
  var allchunks = chunks.length-1;
     for(k=0;k<allchunks;k++){
       var n=str.indexOf(fieldname);
       alert(chunks[k]);
       if(n>0){
       var chunkd=chunks[k].split("::");
         alert(chunkd);
         return chunkd[1];
       }
     }
}
var test = getold_val('kid_2','date_1::02-23-2000||date_2::06-06-1990||kid_1::George||kid_2::Kostas||');

alert(test);

最佳答案

正则表达式可能更具吸引力。这是一个 fiddle :

function getValue(source, key){
    return (new RegExp("(^|\\|)" + key + "::([^$\\|]+)", "i").exec(source) || {})[2];
}    
getValue("date_1::02-23-2000||date_2::06-06-1990||kid_1::George||kid_2::Kostas||","kid_2");

但是如果你想要更复杂的东西,你可以像这样将该字符串解析成一个字典(fiddle):

function splitToDictionary(val, fieldDelimiter, valueDelimiter){
    var dict = {},
    fields = val.split(fieldDelimiter),
    kvp;
    for (var i = 0; i < fields.length; i++) {        
        if (fields[i] !== "") {
            kvp = fields[i].split(valueDelimiter);        
            dict[kvp[0]] = kvp[1];
        }
    }
    return dict;    
}
var dict = splitToDictionary("date_1::02-23-2000||date_2::06-06-1990||kid_1::George||kid_2::Kostas||","||","::");
console.log(dict["date_1"]);
console.log(dict["date_2"]);
console.log(dict["kid_1"]);
console.log(dict["kid_2"]);​

关于从字符串中拆分并返回值的 Javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12606833/

相关文章:

javascript - 我想要一个框架中的重定向代码以在整个窗口中打开链接

javascript - 在 Gatsby JS 中以编程方式创建页面时如何区分某些内容

Javascript : find first and last date of every month between two dates?

javascript - rgraph 的标签问题上面没有出现在第二个图形创建中

javascript - 在 reducer 中使用 Date.now() 替换

javascript - Chrome 动画检查器删除动画?如何录制动画?

javascript - 在 sails.js 中重新排序文件上传的表单参数

javascript - css 中类内的目标类

javascript - 在我的字符串中错误地解释了日期

javascript - 无法将带有变量的 id 添加到类中