2017-04-11 1 views
2

단일 문자로 문자열을 분할하고 JavaScript eval()을 사용하여 문자열을 다시 결합하는 방법을 알아 내려고하고 있습니다.문자열 분할, 부품 평가 및 다시 결합

그래서 나는이 2 * 2D8/2D8처럼, 나는이 날 두 개의 서로 다른 부분을 제공

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

아래처럼 /하여 문자열을 분할 보이는 문자열을 가지고,하지만 난 수없는 것 문자 d으로 나누어 다음 부분을 eval() 두 부분으로 나누는 방법을 알아냅니다. 그래서 마지막 문자열은 4d8/2d8과 비슷합니다.

저는 eval()을 피해야한다는 것을 알고 있습니다 만,이 프로젝트에서는 실제로 문제가되지 않습니다.

+0

? '.forEach()'에 대한 콜백 내에서 또 다른'.split()'호출을 할 수 있습니다. 이 유형의 입력은 한 수준으로 제한됩니까? –

답변

3

가능한 해결 방법 : @Kind 사용자의 솔루션의

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

업데이트 내가 원래 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

이것은 내가 기대했던 것입니다. 와아, 놀라워! –