Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.10.2010, 14:31
Интересующийся
Отправить личное сообщение для Volk_88 Посмотреть профиль Найти все сообщения от Volk_88
 
Регистрация: 23.07.2009
Сообщений: 17

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

Последний раз редактировалось Volk_88, 28.10.2010 в 14:42.
Ответить с цитированием
  #2 (permalink)  
Старый 28.10.2010, 14:45
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

<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>
Ответить с цитированием
  #3 (permalink)  
Старый 28.10.2010, 14:49
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

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:52. Причина: Плохо прочитал — массив не подходит
Ответить с цитированием
  #4 (permalink)  
Старый 28.10.2010, 14:59
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

exec,
Ну, или так:
function changeChar(string, position, character) { 
	return string.replace(new RegExp("^(.{" + (position-1) + "})(.)"), "$1" + character); 
} 
alert( changeChar("Hello", 2, "j") );
Ответить с цитированием
  #5 (permalink)  
Старый 28.10.2010, 15:01
Интересующийся
Отправить личное сообщение для Volk_88 Посмотреть профиль Найти все сообщения от Volk_88
 
Регистрация: 23.07.2009
Сообщений: 17

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск в строке другой подстроки средствами JS YAN Общие вопросы Javascript 13 23.07.2013 09:41
Помогите найти звездочку (*) в строке Samaretz Общие вопросы Javascript 2 14.09.2010 15:44
Как изменить адрес в адресной строке браузера? xqx Events/DOM/Window 2 24.04.2010 17:46
Замена CSS класса каждого четвертого div iGusse jQuery 4 17.12.2009 23:51
текст в статусной строке HelpeR Общие вопросы Javascript 8 09.02.2009 13:28