Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.11.2010, 16:21
Аспирант
Отправить личное сообщение для Semen Посмотреть профиль Найти все сообщения от Semen
 
Регистрация: 28.07.2009
Сообщений: 67

Цифры в подстрочный регистр...
Вот встала задача записывать цифры (например при вводе формул химических) в подстрочный регистр, написал:
var fou="H2SO4";
var m=fou.split('');
for(var i=0; i<m.length; i++){
	if(m[i]=='0' || m[i]=='1' || m[i]=='2' || m[i]=='3' || m[i]=='4' || m[i]=='5' || m[i]=='6' || m[i]=='7' || m[i]=='8' || m[i]=='9') m[i]='<sub>'+m[i]+'</sub>';
}
var fou=m.join('');


работает, но както оно некрасиво получается. Подскажите как тут сократить код, сделать его компактнее (вопрос чисто интереса).
Пытался записать список цифр в операцию сравнения в виде регулярного выражения (чтоб обойтись без || ) - неполучилось...
Ответить с цитированием
  #2 (permalink)  
Старый 06.11.2010, 17:56
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

В таких случаях нужно пользоваться регулярными выражениями. Например, так:
<div>2H2 + O2 = 2H2O</div>
<script>
var div = document.getElementsByTagName('div')[0],
    formula = div.innerHTML,
    newFormula = formula.replace(/(\w)(\d)/g, function(){
      return arguments[1] + '<sub>' + arguments[2] + '</sub>';
    });
div.innerHTML = newFormula;
</script>
Ответить с цитированием
  #3 (permalink)  
Старый 06.11.2010, 18:33
Аспирант
Отправить личное сообщение для Semen Посмотреть профиль Найти все сообщения от Semen
 
Регистрация: 28.07.2009
Сообщений: 67

Вот спасибо - работает
Ответить с цитированием
  #4 (permalink)  
Старый 06.11.2010, 19:03
Аспирант
Отправить личное сообщение для Semen Посмотреть профиль Найти все сообщения от Semen
 
Регистрация: 28.07.2009
Сообщений: 67

Работает, но не со всеми формулами: UO2(NO3)2 - последняя двойка не переводится в нижний регистр из-за скобок. Я делал вариант с replace и у меня получалась вот такая же штука... (поэтому пришел к приведенному мной примеру)...

Последний раз редактировалось Semen, 06.11.2010 в 19:06.
Ответить с цитированием
  #5 (permalink)  
Старый 06.11.2010, 19:18
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Плохо прочитали:
<div>2H2 + UO2(NO3)2 != (2H)2O</div>
<script>
var div = document.getElementsByTagName('div')[0],
    formula = div.innerHTML,
    newFormula = formula.replace(/([\w)])(\d)/g, function(){
      return arguments[1] + '<sub>' + arguments[2] + '</sub>';
    });
div.innerHTML = newFormula;
</script>
Ответить с цитированием
  #6 (permalink)  
Старый 06.11.2010, 19:24
Аспирант
Отправить личное сообщение для Semen Посмотреть профиль Найти все сообщения от Semen
 
Регистрация: 28.07.2009
Сообщений: 67

Спасибо, да видимо плохо прочитал, мне вообще тяжело дается понимание темы регулярные выражения
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фильтр. Допускаются только цифры. балерун Элементы интерфейса 11 11.12.2009 16:12