Цифры в подстрочный регистр...
Вот встала задача записывать цифры (например при вводе формул химических) в подстрочный регистр, написал:
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(''); работает, но както оно некрасиво получается. Подскажите как тут сократить код, сделать его компактнее (вопрос чисто интереса). Пытался записать список цифр в операцию сравнения в виде регулярного выражения (чтоб обойтись без || ) - неполучилось... :no: |
В таких случаях нужно пользоваться регулярными выражениями. Например, так:
<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> |
Вот спасибо - работает :)
|
Работает, но не со всеми формулами: UO2(NO3)2 - последняя двойка не переводится в нижний регистр из-за скобок. Я делал вариант с replace и у меня получалась вот такая же штука... (поэтому пришел к приведенному мной примеру)...
|
Плохо прочитали:
<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> |
Спасибо, да видимо плохо прочитал, мне вообще тяжело дается понимание темы регулярные выражения :(
|
Часовой пояс GMT +3, время: 07:10. |