Вопрос

Мой код динамически генерирует операции строки / номера.Программа динамически строит что-то похожее на следующее:

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

Я хочу выводить это:

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

Я могу написать библиотеку для этого, но я в настоящее время нахожусь в течение временных ограничений.Если кто-то осознает библиотеку, которая может выполнять уравнения, похожие на вышеупомянутые (int + int= int), (строка + int= string), и т. Д.?

Это было полезно?

Решение

Я думаю, что вы, вероятно, просто хотите использовать встроенный JavaScript в функции Eval.

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

редактировать вау, я получил 2 вниз голосов на почти роботизированной скорости, когда я ответил на этот вопрос ~ странный, но снова Eval, вероятно, что вы хотите.

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