2012-01-18 60 views
1

我会像下面得到两个符号之间的字符串中的字符串,并将其推到一个数组

var str = "-#A 
This text belongs to A. 
Dummy Text of A. 
-#B 
This text belongs to B. 
Dummy Text of B. 
-#C 
This text belongs to C. 
Dummy text of C. 
-#Garbage 
This string should be ignored" 

我要像下面忽略文本为“垃圾”

var arr = [["A","This text belongs to A. 
Dummy Text of A."],["B","This text belongs to B. 
Dummy Text of B."] etc...] 
标题数组的字符串

请帮我。我怎样才能做到这一点...

+0

我假设你的引号应该在“这个字符串被忽略..”之后,而不是在“C的虚拟文本”之后。 – Jeff 2012-01-18 03:37:37

+0

@Jeff是的,我正在编辑。谢谢 – Exception 2012-01-18 03:39:34

+0

是只有一行或“\ n”新行有吗??? – 2012-01-18 03:44:43

回答

2
var str="..."; 
var ar=str.split('-#'); 
var res=new Array(); 
for (var s in ar) { 
    if (s=='') continue; 
    var b=ar[s].split('\n'); 
    var name=b.shift(); 
    if (name=='Garbage') continue; 
    b=b.join('\n'); 
    res[res.length]=new Array(name,b); 
} 
+1

+1用于实际回答问题。 – Jeff 2012-01-18 03:46:35

+0

感谢您的回答。 “a”没有在上面声明。 – Exception 2012-01-18 03:51:17

+0

修正了它......“a”在键盘旁边的“s”上...... – 2012-01-18 03:52:13

1

我想出了这一点:

str.match(/-#([A-Z]) ([a-zA-Z. ]+)/g).map(function (i) { 
    return i.split(/-#([A-Z])/).splice(1) 
}) 

地图将不会在IE 8的工作,但有一吨垫片。 mdn docs

Example

+0

OMG ..非常感谢..惊奇的看着这段代码 – Exception 2012-01-18 03:56:08

+0

这是删除字符串中的新行。请使用这个小提琴。我很容易为您编辑。 – Exception 2012-01-18 04:03:01

1
var str = str.split("-#"); 
var newStr=[]; 
for(var i = 0; i < str.length; i++) { 
    if(str[i] != "" && str[i].substr(0,7) != 'Garbage') newStr.push(str[i]); 
} 
console.log(newStr); 

测试的jsfiddle可以发现here

1

正则表达式exec可以允许您为全局匹配使用更简单的模式。

匹配可以在构建数组时可以忽略的索引中包含'#Garbage'。

var str= "-#A This text belongs to A. Dummy Text of A.-#B This text belongs to B. Dummy Text of B.-#C This text belongs to C. Dummy text of C.-#Garbage This string should be ignored" 



var M, arr= [], rx=/-#((Garbage)|(\w+)\s*)([^-]+)/g; 
while((M= rx.exec(str))!= null){ 
    if(M[3]){ 
     arr.push(['"'+M[3]+'"', '"'+M[4]+'"']); 
    } 
} 
// arr>> 
// returned value: (Array) 
[ 
    ["A", "This text belongs to A. Dummy Text of A."], 
    ["B", "This text belongs to B. Dummy Text of B."], 
    ["C", "This text belongs to C. Dummy text of C."] 
] 
相关问题