문제

내 코드는 문자열 / 숫자 작업을 동적으로 생성합니다.프로그램은 다음과 비슷한 것을 동적으로 구축합니다.

"My name " + "is " + "G-Man"
"Your age is " + "21"
"5" * "5"
.

이 작업을 출력하고 싶습니다 :

My Name is G-Man
Your age is 21
25
.

나는 이것을 위해 도서관을 쓸 수 있지만, 나는 현재 시간 제약 조건을 받고있다.위의 것과 유사한 방정식을 수행 할 수있는 라이브러리를 알고있는 경우 (int + int= int), (string + int= string) 등.

도움이 되었습니까?

해결책

JavaScript의 eval value 함수를 사용하고 싶을 것 같습니다.

var a = eval("5 + 5");
console.log(a); // >> 10
.

편집 와우 나는이 질문에 ~ 이상하게 답변 할 때 거의 로봇 속도로 2 개의 다운 득표를 얻었지만, 다시 평가하는 것은 아마 당신이 원하는 것입니다.

var a = eval("'Your age is ' + '22'");
console.log(a); // >> Your age is 22 
.

편집 2 장난 꾸러기가 없는지 확인하기 위해 입력의 빠른 검증을 수행하기위한 출발점이 있습니다.

var test1 = [
"testing"
,"+"
,"123"
];
var test2 = [
"8"
,"*"
,"5"
,"/"
,"3"
];
var test3 = [
"window.alert('bad');"
];
var test4 = [
"\"It's hard to escape things\", said "
," + "
,"Bob"
];

function supereval(arr) {
    var sEval = '';
    for(var i=0; i<arr.length; i++) {
        if(!isNaN(parseFloat(arr[i])) && isFinite(arr[i])) { // number
            sEval += arr[i];
//console.log("> number");
        } else if( /^\s?[\+\/\*\-]\s?$/i.test(arr[i]) ) { // operation
            sEval += arr[i];
//console.log("> operation");
        } else { // string
            sEval += "\"" + arr[i].replace(/"/g, '\\"') + "\"";
//console.log("> string");
        }
    }
console.log("DEBUG:" + sEval);
    return eval(sEval);
}

console.log(supereval(test1));
console.log(supereval(test2));
console.log(supereval(test3));
console.log(supereval(test4));
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top