Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Замена позиции в строке (https://javascript.ru/forum/misc/12675-zamena-pozicii-v-stroke.html)

Volk_88 28.10.2010 14:31

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

exec 28.10.2010 14:45

<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>

subzey 28.10.2010 14:49

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));


Другие варианты?

subzey 28.10.2010 14:59

exec,
Ну, или так:
function changeChar(string, position, character) { 
	return string.replace(new RegExp("^(.{" + (position-1) + "})(.)"), "$1" + character); 
} 
alert( changeChar("Hello", 2, "j") );
:)

Volk_88 28.10.2010 15:01

Спасибо всем, выбрал вариант от exec:
str= str.slice(0, num) + ((checked)?1:0) + str.slice(num+1);


Часовой пояс GMT +3, время: 05:39.