Замена позиции в строке
Имеется строка: 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, время: 05:32. |