Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Преобразование текста в число. (https://javascript.ru/forum/misc/52874-preobrazovanie-teksta-v-chislo.html)

Valentin1918 11.01.2015 01:04

Преобразование текста в число.
 
Необходимо вырезать из текста цифры, и преобразовать их в числовые значения.
К примеру есть:
<p>Пример: 5+15 =двадцать</p>
Сопутствующий вопрос, возможно ли вырезать и символ "+" и преобразовать из текста в математический символ?
Заранее всем спасибо за помощь!

bes 11.01.2015 01:26

Цитата:

Сообщение от Valentin1918
Необходимо вырезать из текста цифры, и преобразовать их в числовые значения.
К примеру есть:
<p>Пример: 5+15 =двадцать</p>
Сопутствующий вопрос, возможно ли вырезать и символ "+" и преобразовать из текста в математический символ?
Заранее всем спасибо за помощь!

для начала
var str = "Пример: 5+15 =двадцать";
var res = 0;
str.match(/[\d]+/g).forEach(function (value) {
	res = res + +value;
});
alert(res);

Vlasenko Fedor 11.01.2015 01:50

var txt = "<p>Пример: 5+15 =двадцать</p>";
var result = txt.replace(/.*?(\d.*?)=.*/, function(a, b){
   return (new Function( 'return (' + b + ')' )());

});
alert(result);

еще вариант :)

danik.js 11.01.2015 09:41

bes, тут больше reduce подойдет:
var str = "Пример: 5+15 =двадцать";
var res = str.match(/\d+/g).reduce(function (res, value) {
    return res + +value;
}, 0);
alert(res);

bes 11.01.2015 09:53

Цитата:

Сообщение от danik.js
bes, тут больше reduce подойдет:

да, или reduceRight, ни разу толком не пользовал, поэтому не догадался

Valentin1918 11.01.2015 13:52

Всем спасибо, будем разбираться :)

dkstra 11.01.2015 23:12

странно, что никто не предложил самый очевидный вариант
alert(eval("example 5+15 =twenty".replace(/[^\d+]+/g, "")))

вот так со всеми операциями
"example 5-15 =twenty, example 5+15 =twenty, example 15/5 =twenty, example 5*15 =twenty"
.split(",")
.forEach(function(str){
   alert(eval(str.replace(/[^\d+*/-]/g, "")))
})

bes 11.01.2015 23:19

Цитата:

Сообщение от dkstra
странно, что никто не предложил самый очевидный вариант

потому что все знают, что eval - зло, даже тогда, когда не зло, потому что влом убеждаться в этом

dkstra 11.01.2015 23:23

bes,
Это баззворд для быдла.

bes 11.01.2015 23:29

Цитата:

Сообщение от dkstra
bes,
Это баззворд для быдла.

небыдло пишет языки со своими правилам, а не следует спецификациям :D
сам бы eval юзать не стал, потому как влом искать, где мог бы быть возможный прокол, тем более есть алтернативные варианты


Часовой пояс GMT +3, время: 14:16.