Javascript函数从字符串中拆分并返回值
我试图抓住一个特定的价值。我是javascript新手,我不明白为什么这不起作用 如果我解析“kid_2”,我应该得到“kostas”。我总是得到“02-23-2000”,而不是“Kostas”。所以我一定有一个逻辑问题在循环中,但我真的卡住了Javascript函数从字符串中拆分并返回值,javascript,Javascript,我试图抓住一个特定的价值。我是javascript新手,我不明白为什么这不起作用 如果我解析“kid_2”,我应该得到“kostas”。我总是得到“02-23-2000”,而不是“Kostas”。所以我一定有一个逻辑问题在循环中,但我真的卡住了 function getold_val(fieldname,str){ var chunks=str.split("||"); var allchunks = chunks.length-1; for(k=0;k<allchun
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);
函数getold\u val(字段名,str){
var chunks=str.split(“| |”);
var allchunks=chunks.length-1;
对于(k=0;k0){
var chunkd=chunks[k]。拆分(“:”);
警报(分块);
返回chunkd[1];
}
}
}
var测试=getold_val('kid_2','date_1::02-23-2000 | | date_2::06-06-1990 | | kid_1::George | | kid_2::Kostas | |);
警报(测试);
有两个错误。第一个错误出现在
indexOf
调用中:
var n = str.indexOf(fieldname);
这将始终返回大于或等于0的值,因为该字段存在于字符串中。你应该做的是:
var n = chunks[k].indexOf(fieldname);
第二个错误出现在if
语句中。应该是:
if(n >= 0) {
...
}
或
您正在查找的子字符串很可能是字符串开头的,在这种情况下,其索引为0indexOf
如果找不到您要查找的内容,则返回-1
也就是说,这里有一个更好的方法来做你想做的事情:
function getold_val(fieldName, str) {
var keyValuePairs = str.split("||");
var returnValue = null;
if(/||$/.match(str)) {
keyValuePairs = keyValuePairs.slice(0, keyValuePairs.length - 1);
}
var found = false;
var i = 0;
while(i < keyValuePairs.length && !found) {
var keyValuePair = keyValuePairs[i].split("::");
var key = keyValuePair[0];
var value = keyValuePair[1];
if(fieldName === key) {
returnValue = value;
found = true;
}
i++;
}
return returnValue;
}
函数getold\u val(字段名,str){
var keyValuePairs=str.split(“| |”);
var returnValue=null;
如果(/|$/.match(str)){
keyValuePairs=keyValuePairs.slice(0,keyValuePairs.length-1);
}
var=false;
var i=0;
while(iindexOf
调用中:
var n = str.indexOf(fieldname);
这将始终返回大于或等于0的值,因为该字段存在于字符串中。你应该做的是:
var n = chunks[k].indexOf(fieldname);
第二个错误出现在if
语句中。应该是:
if(n >= 0) {
...
}
或
您正在查找的子字符串很可能是字符串开头的,在这种情况下,其索引为0indexOf
如果找不到您要查找的内容,则返回-1
也就是说,这里有一个更好的方法来做你想做的事情:
function getold_val(fieldName, str) {
var keyValuePairs = str.split("||");
var returnValue = null;
if(/||$/.match(str)) {
keyValuePairs = keyValuePairs.slice(0, keyValuePairs.length - 1);
}
var found = false;
var i = 0;
while(i < keyValuePairs.length && !found) {
var keyValuePair = keyValuePairs[i].split("::");
var key = keyValuePair[0];
var value = keyValuePair[1];
if(fieldName === key) {
returnValue = value;
found = true;
}
i++;
}
return returnValue;
}
函数getold\u val(字段名,str){
var keyValuePairs=str.split(“| |”);
var returnValue=null;
如果(/|$/.match(str)){
keyValuePairs=keyValuePairs.slice(0,keyValuePairs.length-1);
}
var=false;
var i=0;
while(i.split('::')
,因为我觉得。子字符串(…)
会更容易。这很有效,我的建议如下
函数getold\u val(字段名,str){
var chunks=str.split(“| |”);
for(var i=0;i代码与您的几乎相同,我只是没有使用第二个
.split('::')
,因为我觉得.substring(…)
会更简单。正则表达式可能更吸引人。这里有一个:
但是,如果您想要更复杂一些的内容,可以将该字符串解析到类似于so()的字典中:
function splitToDictionary(val、fieldDelimiter、valueDelimiter){
var dict={},
字段=val.split(字段分隔符),
kvp;
对于(var i=0;i正则表达式可能更有吸引力。这里有一个:
但是,如果您想要更复杂一些的内容,可以将该字符串解析到类似于so()的字典中:
function splitToDictionary(val、fieldDelimiter、valueDelimiter){
var dict={},
字段=val.split(字段分隔符),
kvp;
对于(var i=0;i
应该是allchunks=chunks.length