2012-04-19 134 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

相關問題