Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.01.2015, 01:04
Аспирант
Отправить личное сообщение для Valentin1918 Посмотреть профиль Найти все сообщения от Valentin1918
 
Регистрация: 10.01.2015
Сообщений: 44

Преобразование текста в число.
Необходимо вырезать из текста цифры, и преобразовать их в числовые значения.
К примеру есть:
<p>Пример: 5+15 =двадцать</p>
Сопутствующий вопрос, возможно ли вырезать и символ "+" и преобразовать из текста в математический символ?
Заранее всем спасибо за помощь!
Ответить с цитированием
  #2 (permalink)  
Старый 11.01.2015, 01:26
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от Valentin1918
Необходимо вырезать из текста цифры, и преобразовать их в числовые значения.
К примеру есть:
<p>Пример: 5+15 =двадцать</p>
Сопутствующий вопрос, возможно ли вырезать и символ "+" и преобразовать из текста в математический символ?
Заранее всем спасибо за помощь!
для начала
var str = "Пример: 5+15 =двадцать";
var res = 0;
str.match(/[\d]+/g).forEach(function (value) {
	res = res + +value;
});
alert(res);
Ответить с цитированием
  #3 (permalink)  
Старый 11.01.2015, 01:50
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

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

});
alert(result);

еще вариант
Ответить с цитированием
  #4 (permalink)  
Старый 11.01.2015, 09:41
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

bes, тут больше reduce подойдет:
var str = "Пример: 5+15 =двадцать";
var res = str.match(/\d+/g).reduce(function (res, value) {
    return res + +value;
}, 0);
alert(res);
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #5 (permalink)  
Старый 11.01.2015, 09:53
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от danik.js
bes, тут больше reduce подойдет:
да, или reduceRight, ни разу толком не пользовал, поэтому не догадался
Ответить с цитированием
  #6 (permalink)  
Старый 11.01.2015, 13:52
Аспирант
Отправить личное сообщение для Valentin1918 Посмотреть профиль Найти все сообщения от Valentin1918
 
Регистрация: 10.01.2015
Сообщений: 44

Всем спасибо, будем разбираться
Ответить с цитированием
  #7 (permalink)  
Старый 11.01.2015, 23:12
Интересующийся
Посмотреть профиль Найти все сообщения от dkstra
 
Регистрация: 11.01.2015
Сообщений: 11

странно, что никто не предложил самый очевидный вариант
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, "")))
})

Последний раз редактировалось dkstra, 11.01.2015 в 23:22.
Ответить с цитированием
  #8 (permalink)  
Старый 11.01.2015, 23:19
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от dkstra
странно, что никто не предложил самый очевидный вариант
потому что все знают, что eval - зло, даже тогда, когда не зло, потому что влом убеждаться в этом
Ответить с цитированием
  #9 (permalink)  
Старый 11.01.2015, 23:23
Интересующийся
Посмотреть профиль Найти все сообщения от dkstra
 
Регистрация: 11.01.2015
Сообщений: 11

bes,
Это баззворд для быдла.
Ответить с цитированием
  #10 (permalink)  
Старый 11.01.2015, 23:29
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от dkstra
bes,
Это баззворд для быдла.
небыдло пишет языки со своими правилам, а не следует спецификациям
сам бы eval юзать не стал, потому как влом искать, где мог бы быть возможный прокол, тем более есть алтернативные варианты
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразование сложной строки в число Basil_JS Events/DOM/Window 3 05.09.2014 08:16
Как найти наибольшее число и ввести его на экран? Ivan152 Оффтопик 2 20.05.2012 20:13
Как запретить отмену выделения текста от клика мышью? Маэстро Internet Explorer 0 03.04.2012 21:21
Чудеса математики js при padding borovik Элементы интерфейса 6 09.07.2011 22:02
Получение позиции текста по координатам traa Events/DOM/Window 20 08.02.2011 14:19