Замена позиции в строке
Имеется строка: 0000000
Входе работы скрипта, постоянно требуется изменить позицию строки с 0 на 1, и обратно. Но вот никак не могу придумать эту замену без разбивки этой строки в массив и сбора обратно. var str = '0000000'; str[1] = 1; // так нельзя, readonly RegExp? но я совершенно не понимаю как создать регулярку, которая находила бы заданную позицию. Возможно через prototype, проводить замену? Единственный вариант (но я думаю есть варианты лучше): var str='00000000', newstr = [], num =2; for(var i=0; i<str.length; i++){ if(num == i) newstr[i] = '1'; else newstr[i] = str[i]; } str = newstr.join(''); // 00100000 |
<script type='text/javascript'> function changeChar(string, position, char) { return string.slice(0, position - 1) + char + string.slice(position); } alert( changeChar("Hello", 2, "j") ); </script> |
function stringXor(string, position){ var out = (parseInt(string, 2) ^ 1<<(string.length - position - 1)).toString(2); while (out.length < string.length) out = "0" + out; return out; } alert(stringXor("0110001", 2)); Другие варианты? |
exec,
Ну, или так: function changeChar(string, position, character) { return string.replace(new RegExp("^(.{" + (position-1) + "})(.)"), "$1" + character); } alert( changeChar("Hello", 2, "j") );:) |
Спасибо всем, выбрал вариант от exec:
str= str.slice(0, num) + ((checked)?1:0) + str.slice(num+1); |
Часовой пояс GMT +3, время: 06:28. |