Цифры в подстрочный регистр...
Вот встала задача записывать цифры (например при вводе формул химических) в подстрочный регистр, написал:
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, время: 14:05. |