2017-04-11 51 views
2

我想弄清楚如何通過單個字符拆分字符串並使用javascript eval(),然後重新加入字符串。拆分字符串,評估零件並重新加入

所以我有一個字符串,它看起來像這樣2 * 2D8/2D8,我分裂由/像下面

remDice.split("/").forEach(function (remDie) { 
    console.log(remDie); 
}); 

這使我有兩個不同的部分字符串,但我似乎無法到弄清楚下一部分是由字符deval()兩部分組成的。以便我的最終字符串看起來像4d8/2d8

我知道你應該避免eval()但這真的不是這個項目所關心的。

+0

,您在這個計算中期待什麼結果呢?在你的'.forEach()'回調中,你總是可以做另一個'.split()'調用。這是否限於這種類型的輸入的一個級別? –

回答

3

可能的解決辦法:

var str = '2*2d8/2d8', 
 
    str2 = str.split('/').map(v => v.split('d').map(c => eval(c)).join('d')).join('/'); 
 
    
 
    console.log(str2);

+0

我仍然想'd'字符,我希望數學運算只發生在'd'的左側和右側,以使'2 * 2'變成'4'。最終的字符串應該看起來像'4d8/2d8'。 對不起,我不確定我說得很好。 –

+1

@ RobertE.McIntosh完成了 –

1

的@Kind用戶的解決方案更新,因爲我覺得原來的Q有望有點不同的結果。

var str = '2*2d8/2d8', 
 
    str2 = str.split('/').map(v => { 
 
     s = v.split('d') 
 
     return eval(s[0]) + 'd' + eval(s[1]) 
 
    }).join('/') 
 
    
 
    console.log(str2);

+0

這就是我期待的。哇,太棒了! –