Я создал функцию для этого.
var text="adsf [name]Victor[/name] dummytext [name]Elliot[/name] asdf [name]Jake[/name] asdf [foo]bar[/foo]";
alert( readTags(text,'name') ); //Victor,Elliot,Jake
alert( readTags(text,'foo') ); //bar
но теперь мне нравится реализовывать функцию, которая получает строку, подобную этой
[person]
[name]jake[/name]
[age]12[/age]
[/person]
и вернуть объект, подобный этому
var object={};
object['person']={};
object['name']='jake';
object['age']='12';
return(object);
но я не знаю, как перебрать текст. Как бороться с начальными и конечными тегами?
как
[tag] [tag]value[/tag] [/tag]
Я подумал найти начальный тег слева и конечный тег справа, используя indexOf('[tag]')
и lastindexOf('[/tag]')
но в этой ситуации не работает
[tag]value[/tag] [tag]value[/tag]
это предыдущая функция
function readTags(str,property){
var beginTag='['+property+']';
var endTag='[/'+property+']';
var values=new Array(0);
while(str.indexOf(beginTag)!=-1){
values[values.length]=strBetween(str,beginTag,endTag);
str=str.substring(str.indexOf(endTag)+endTag.length);
}
return(values);
}
function strBetween(string,strBegin,strEnd){ //StrBetween("abcdef","b","e") //return "cd"
var posBegin, posEnd;
posBegin=string.indexOf(strBegin);
string=string.substring(posBegin + strBegin.length);
posEnd=string.indexOf(strEnd);
string=string.substring(0,posEnd);
if ((posBegin==-1)||(posEnd==-1)){
return(null);
}else{
return(string);
}
}