split正则分割字符串(难)

cn00439801 2009-09-14 12:00:13
字符串:color-white-black--name-'a-b'-ppg--style-'c''-d'-beauty-fashion
1. --表示组的分隔符。
2. -表示分隔符。
3. 字符串内有-或者’的字符串两边加'',如a-b由于含有-,表示为'a-b',c'-d表示为'c''-d'。
3. 分割的字符串放入二维数组。
所以上述字符串分割后的结果是:
一个二维数组,数组每项如下:
arr[0][0] = "color";
arr[0][1] = "white";
arr[0][2] = "black";
arr[1][0] = "name";
arr[1][1] = "a-b";
arr[1][2] = "ppg";
arr[2][0] = "style";
arr[2][1] = "c'-d";
arr[2][2] = "beauty";
arr[2][3] = "fashion";



...全文
183 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hemingwang0902 2009-09-14
  • 打赏
  • 举报
回复
顶 一 下
s_liangchao1s 2009-09-14
  • 打赏
  • 举报
回复

<script type="text/javascript">
<!--
var str = "color-white-black--name-'a-b'-ppg--style-'c''-d'-beauty-fashion";
arr = str.replace(/'([a-z]+)-([a-z]+)'/i,"$1*$2").replace(/'(.*?)''-(.*?)'/,"$1'*$2").split("--");// 测试CSDN显示代码滚动条BUG
for(var i = 0; i < arr.length; i++){
for(var j = 0; j < arr[i].split('-').length; j++){
document.write(arr[i].split("-")[j].replace("*","-")+"<br/>");
}
}
//-->
</script>

CSDNzh
s_liangchao1s 2009-09-14
  • 打赏
  • 举报
回复

<script type="text/javascript">
<!--
var str = "color-white-black--name-'a-b'-ppg--style-'c''-d'-beauty-fashion";
arr = str.replace(/'([a-z]+)-([a-z]+)'/i,"$1*$2").replace(/'(.*?)''-(.*?)'/,"$1'*$2").split("--");
for(var i = 0; i < arr.length; i++){
for(var j = 0; j < arr[i].split('-').length; j++){
document.write(arr[i].split("-")[j].replace("*","-")+"<br/>");
}
}
//-->
</script>
hookee 2009-09-14
  • 打赏
  • 举报
回复

var s = "color-white-black--name-'a-b'-ppg--style-'c''-d'-beauty-fashion";
var a=[];
var b = s.split("--");
for(var i=0;i<b.length;i++){
a[i] = parse(b[i]);
}
for(var i=0;i<b.length;i++){
for(var j=0;j<a[i].length;j++)
alert("a["+i+"]["+j+"] = " + a[i][j]);
}


function parse(str){
arr = [];
var bqf=false;
var s = "";
for(var i=0;i<str.length;i++){
var c = str.charAt(i);
switch(c){
case '-':if(!bqf){
if(s!="") arr.push(s);
s = "";
}
else s +=c;
break;
case "'":if(bqf){
var tc = str.charAt(i+1);
if(tc=="'"){
s += "'";
i++;
}
else bqf = false;
}
else{
bqf = true;
}
break;
default: s +=c;
}
}
if(s!="") arr.push(s);
return arr;
}

hookee 2009-09-14
  • 打赏
  • 举报
回复

var s = "color-white-black--name-'a-b'-ppg--style-'c''-d'-beauty-fashion";
var a=[];
var b = s.split("--");
for(var i=0;i<b.length;i++){
a[i] = parse(b[i]);
}
for(var i=0;i<b.length;i++){
for(var j=0;j<a[i].length;j++)
alert("a["+i+"]["+j+"] = " + a[i][j]);
}


function parse(str){
arr = [];
var bqf=false;
var s = "";
for(var i=0;i<str.length;i++){
var c = str.charAt(i);
switch(c){
case '-':if(!bqf){
if(s!="") arr.push(s);
s = "";
}
else s +=c;
break;
case "'":if(bqf){
var tc = str.charAt(i+1);
if(tc=="'"){
s += "'";
i++;
}
else bqf = false;
}
else{
bqf = true;
}
break;
default: s +=c;
}
}
if(s!="") arr.push(s);
return arr;
}

87,902

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧