var myfiles="city=北京市district=海淀区street=北四环西路streetno=9"
var a=myfiles.replace(/[a-zA-Z=]/g,",");
var b=a.split(",");
var c=new Array(4);
var n=0;
for(var i=0;i<b.length;i++)
{
if(b[i]!="")
{
c[n]=b[i];
n++;
}
}
var aa = c[0];
var bb = c[1];
var cc = c[2];
var dd = c[3];
var a=myfiles.replace(/[a-zA-Z=]/g,",");
var b=a.split(",");
var c=new Array(4);
var n=0;
for(var i=0;i<b.length;i++)
{
if(b[i]!="")
{
c[n]=b[i];
n++;
}
}
var aa = c[0];
var bb = c[1];
var cc = c[2];
var dd = c[3];
var myfiles="city=北京市district=海淀区street=北四环西路streetno=9";
var re = /city=([^\x00-\xff]+)district=([^\x00-\xff]+)street=([^\x00-\xff]+)streetno=(\d+)/;
if(re.test(myfiles))
{
var aa = RegExp.$1;
var bb = RegExp.$2;
var cc = RegExp.$3;
var dd = parseInt(RegExp.$4);
}
alert(aa);
alert(bb);
alert(cc);
alert(dd);
</script>
var myfiles="city=北京市district=海淀区street=北四环西路streetno=9";
var re = /city=([^\x00-\xff]+)district=([^\x00-\xff]+)street=([^\x00-\xff]+)streetno=(\d+)/;
if(re.test(myfiles))
{
var aa = RegExp.$1;
var bb = RegExp.$2;
var cc = RegExp.$3;
var dd = parseInt(RegExp.$4);
}
alert(aa);
alert(bb);
alert(cc);
alert(dd);
</script>
myfiles="city=北京市district=海淀区street=北四环西路streetno=9"
-----------------如果你这样设计返回字符串,就更好了:myfiles="{city:'北京市',district:'海淀区',street:'北四环西路',streetno:9}";取值:var obj = eval( "(" +myfiles+ ")" );
alert(obj.city);
alert(obj.district);
alert(obj.street);
alert(obj.streetno);
this.key = k;
this.pos = p;
}
function sfun(obj1,obj2){
if(obj1.pos == obj2.pos) return 0;
if(obj1.pos > obj2.pos) return 1;
if(obj1.pos < obj2.pos) return -1;
}
s = myfiles;
var key = new Array();
key[0] = "city";
key[1] = "district";
key[2] = "street";
key[3] = "streetno";
var val = new Array();
var pos = new Array();
for(var i=0;i<key.length;i++){
n = s.indexOf(key[i] + "=");
if(n!=-1) pos[pos.length] = new item(key[i], n);
}
pos.sort(sfun);
for(var i=0;i<pos.length;i++){
if(i==pos.length-1) n = s.length;
else n = pos[i+1].pos;
val[val.length] = s.substring(pos[i].pos+pos[i].key.length+1, n);
}
aa = val[0];
bb = val[1];
cc = val[2];
dd = val[3];
-------------------------------------------
我现在通过AJAX传到javascript里有个字符串名字叫my_files
myfiles="city=北京市district=海淀区street=北四环西路streetno=9"
-------------------------------------------
如果这个得到的字符串是自己组装的话,那么为什么一定要组装成这样呢,这样的确给自己的解析带来了麻烦,使用正则表达式的确需要功底,比如上面那些兄弟们。
我只是在想,如果没有什么特别的需求的话,的确可以考虑在服务器端从新组装字符串,比如说,可以组装成xml格式
<result>
<city>北京市</city>
<district>海淀区</district>
<street>北四环西路</street>
<streetno>9</streetno>
</result>客户端端接收到字符串后,比如存在myfiles中
使用如下代码解析
var xmldoc = new ActiveXObject("MSXML2.DOMDocument");
xmldoc.loadXML(myfiles);
var city = xmldoc.documentElement.childNodes[0].text;
var district= xmldoc.documentElement.childNodes[1].text;
var street= xmldoc.documentElement.childNodes[2].text;
var streetno= xmldoc.documentElement.childNodes[3].text;
var myfiles="{city:'北京市',district:'海淀区',street:'北四环西路',streetno:9}";var obj = eval( "(" +myfiles+ ")" );
alert(obj.city);
alert(obj.district);
alert(obj.street);
alert(obj.streetno);</script>
如果是这样有规律的话可以用正则,如果=后也可以是字母,正则不行<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD><BODY>
<script type="text/javascript">
var myfiles="city=北京市district=海淀区street=北四?西路streetno=9"
alert(myfiles.replace(/[a-z]+?=/gi,","))
//然后split(",")
</script>
</BODY>
</HTML>
声明:在此我用的是hookee() 朋友的代码 代码清晰都几乎猜到我程序的内部结构 佩服!而且举的例子很详细 哥们收分!!!!