格式:编号(2字节)+ 总长度(3字节)+ 数据内容(总长度-5) + ........ +编号(2字节)+ 总长度(3字节)+ 数据内容(总长度-5)     读卡返回数据编号的规则:
    00  发卡标志   0000700
    01  医疗证号   0101012345
    02  名称       02011张三三
    03  部门       03015人力资源部
    04  单位       04013中国合作
    05  发卡日期   0501920091204123445
    06  年审日期   0601900000000000000 以上的例子,返回一个字符串。
0000700010101234502011张三三03015人力资源部04013中国移动05019200912041234450601900000000000000
在js代码里解析这个字符串,得到:发卡标志:00,医疗证号:12345,名称:张三三,部门:人力资源部,单位:中国合作,发卡日期:20091204123445,年审日期:00000000000000写一个通用的方法

解决方案 »

  1.   

    var r = new RegExp("(([0-9]{2})[0-9]{5}[0-9]{5}([0-9]{5})[0-9]{5}([^0-9]+)[0-9]{5}([^0-9]+)[0-9]{5}([^0-9]+)[0-9]{5}([0-9]{14})[0-9]{5}([0-9]{14}))");
    while(r.test(s)){
    document.write("A:"+RegExp.$2+"<br>");
    document.write("B:"+RegExp.$3+"<br>");
    document.write("C:"+RegExp.$4+"<br>");
    document.write("D:"+RegExp.$5+"<br>");
    document.write("E:"+RegExp.$6+"<br>");
    document.write("F:"+RegExp.$7+"<br>");
    document.write("G:"+RegExp.$8+"<br>");
    document.write("---------------------<br>");
    s=s.replace(RegExp.$1,"");
    }
      

  2.   

    用tab符做分隔符吧。然后splitString string="a\tb\tc\t";
    String[]strSplit=string.split("\t");
    for (String str : strSplit) 
    {
    System.out.print(str+"\t");
    }
      

  3.   

    不过最好还是采用Json,如果你拼成字符串只是为了服务端和客户端传递的话
      

  4.   

    var r = new RegExp("(([0-9]{2})[0-9]{5}[0-9]{5}([0-9]+?)[0-9]{5}([^0-9]+)[0-9]{5}([^0-9]+)[0-9]{5}([^0-9]+)[0-9]{5}([0-9]{14})[0-9]{5}([0-9]{14}))");while(r.test(s)){
    document.write("A:"+RegExp.$2+"<br>");
    document.write("B:"+RegExp.$3+"<br>");
    document.write("C:"+RegExp.$4+"<br>");
    document.write("D:"+RegExp.$5+"<br>");
    document.write("E:"+RegExp.$6+"<br>");
    document.write("F:"+RegExp.$7+"<br>");
    document.write("G:"+RegExp.$8+"<br>");
    document.write("---------------------<br>");
    s=s.replace(RegExp.$1,"");
    }
      

  5.   

    感谢各位,结帖啦,shan1119真是高人。
    因为这个字符串是读卡里的信息,卡的空间有限,所以就按照这种格式传数据,可以根据每个字段的长度定义,如果是定长的数据不足补空格或零的话,太浪费空间。要是有个方法更通用些就更好了