2012-04-19 132 views
0

我有下面的字符串:问题分割字符串,包括括号,分号和空格

var sphere1 = CSG.sphere({center: [5, 5, 5], radius: 10, resolution: resolution });<br> 
var sphere2 = sphere1.translate([12, 5, 0]);<br> 

那我尝试使用以下(/,| |[|]|;/我的正则表达式)拆分:

var words = $(selector).html().split(/,| |[|]|;/); 

我有三个问题:

  • 我在行尾(BR标记之前)丢失了分号 - 它们应的话阵列

  • ,其包括在所述支架(5或12)的第一个数字的字符串在被独立地分割也包括开放式托架

  • ,其包括在托架的最后一个号码的字符串(5或0)还包括括号。

基本上,我想特别是“分离株”出来的任何号码,以便我可以增加/个别进行修改。

RegEx的任何想法?

回答

0

这可能会给你一个起点

http://jsfiddle.net/JqT4k/1/

var str = "var sphere1 = CSG.sphere({center: [5, 5, 5], radius: 10, resolution: resolution }); var sphere2 = sphere1.translate([12, 5, 0]);"; 

//evaluates each replace individually 
function match_eval(m){ 
    // m is going to be [5, 5, 5] and then [12, 5, 0], you can do with this as you see fit 
    return "[0,0,0]";  
} 

alert(str.replace(/\[(*\d+ *,?)+\]/g, match_eval)); 
+0

感谢您的回答。然而,我真的想要解决每个单独的数字(例如每个0或每个5),它也可能是一个不在括号内的数字。例如,使用/(0-9)+ /正确地匹配它们,但删除“违规”数字匹配而不是在数组中添加它们。 – jonnycowboy 2012-04-19 17:14:38

+0

那么你可以修改它,以便它只匹配每个数字并使用相同的过程。不过,我不知道你打算怎么知道哪个数字是哪个。 – climbage 2012-04-19 17:31:16

+0

实际上,我所做的是将每个数组元素包裹在span标记中,并使用个别标识,然后用跨度的连接替换DIV: – jonnycowboy 2012-04-19 17:35:56

0

我在这里已经固定它:http://jsfiddle.net/jonnycowboy/w4n3W/12我用我的另一计算器问题/答案找到了一个方法:“无功NUMS = $( 。选择器)的.html()匹配(/ [0-9] + /克); var words = $(selector).html()。split(/ [0-9] +/g); newHtml + =''+ words [0] +''; for(var i = 0; i < nums.length; i ++){newHtml + =''+ nums [i] +''; newHtml + =''+ words [i + 1] +''; }' -

+0

当您发布代码时,请选择代码并单击看起来像“{}”的按钮。这将格式化您的代码,并使其看起来很好。 – 2012-05-03 07:12:40

相关问题