powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Поменять символы в строке: то ли СтрЗаменить() не работает, то ли я что-то не так делаю.
9 сообщений из 9, страница 1 из 1
Поменять символы в строке: то ли СтрЗаменить() не работает, то ли я что-то не так делаю.
    #37422720
Кантачес
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Версия 8.2.
Есть строка символов, нужно ее перебрать: менять соседние символы местами. Как раз это и не получается.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
СтрокаБукв = "осва"; //например, такая
Перебрать(СтрокаБукв,  1 );
...............
Процедура Перебрать(СтрокаБукв, ИндексБуквы)
	   ПерваяБуква = Сред(СтрокаБукв, ИндексБуквы,  1 );
	   ВтораяБуква = Сред(СтрокаБукв, ИндексБуквы +  1 ,  1 );
	   
	   //копируем на место первой буквы вторую
	   СтрокаБукв = СтрЗаменить(СтрокаБукв, ИндексБуквы, ВтораяБуква);
	   Сообщить(СтрокаБукв);
           //копируем на место второй буквы первую
	   СтрокаБукв = СтрЗаменить(СтрокаБукв, ИндексБуквы +  1 , ПерваяБуква);
	   Сообщить(СтрокаБукв);
КонецПроцедуры
В обоих случаях выводит осва. Смотрел через отладчик - значения ИндексБуквы, ПерваяБуква\ВтораяБуква меняются. Только значения СтрокаБукв как было осва, так и осталось.
...
Рейтинг: 0 / 0
Поменять символы в строке: то ли СтрЗаменить() не работает, то ли я что-то не так делаю.
    #37422941
DmitriyZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кантачес, внимаельно читать в справке, как работает СтрЗаменить()!
...
Рейтинг: 0 / 0
Поменять символы в строке: то ли СтрЗаменить() не работает, то ли я что-то не так делаю.
    #37423165
Кантачес
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitriyZ, точно, извиняюсь, протупил.
В моем примере в исходной строке каждая буква встречается всего один раз. Поэтому функция будет возвращать корректный результат. Но если заменяемая буква встречается несколько раз, то функция заменит их все. Например, одна и та же буква находится и второй, и третьей в строке, а мне нужно заменить ее только вторую. Как быть?
...
Рейтинг: 0 / 0
Поменять символы в строке: то ли СтрЗаменить() не работает, то ли я что-то не так делаю.
    #37423221
AHDP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кантачес,

Чётные поменять местами с нечётными или переместить первый символ в конец?

Для Ном = 0 По Цел(стрДлина(Строкабукв)/2) -1 Цикл
Строка = Лев(Строкабукв, 2*(Ном)) + Сред(Строкабукв, Ном*2 + 2, 1) + Сред(Строкабукв, Ном*2 + 1, 1) + ?(стрДлина(Строкабукв)/2)>Ном,Сред(Строкабукв, Ном*2 + 3, "");
КонецЦикла;
...
Рейтинг: 0 / 0
Поменять символы в строке: то ли СтрЗаменить() не работает, то ли я что-то не так делаю.
    #37423401
Кантачес
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AHDP, ничего себе код. А проще бывает?
Есть строка.
Скопировал первую букву.
В строке вместо первой буквы вставил вторую. Теперь в строке первая и вторая буквы одинаковые.
В строке вместо второй буквы вставить скопированную первую. Через СтрЗаменить() такая штука не проходит, потому что индексы она не принимает.
...
Рейтинг: 0 / 0
Поменять символы в строке: то ли СтрЗаменить() не работает, то ли я что-то не так делаю.
    #37423423
AHDP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кантачес,

ТЕбе ещё сколько разных вариантов привести? ;)

Этот самый оптимальный с точки зрения размещения кода на экране. С коментом всего 4 строки.
...
Рейтинг: 0 / 0
Поменять символы в строке: то ли СтрЗаменить() не работает, то ли я что-то не так делаю.
    #37423827
Кантачес
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AHDP, не надо:)
Спасибо за код. Непривычный после с++ - тот позволял со строками совсем просто работать. Не понял только, зачем строку пополам делить и, соответственно, не понял строки
?(стрДлина(Строкабукв)/2)>Ном,Сред(Строкабукв, Ном*2 + 3, "");
...
Рейтинг: 0 / 0
Поменять символы в строке: то ли СтрЗаменить() не работает, то ли я что-то не так делаю.
    #37424387
AHDP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Проходим строку за 1 цикл с понятными смещениями;
2) Для корректной обрабтки завершения строки. Кстати, "" надо заменить на прав(стрсимв, 2*ном+3).
...
Рейтинг: 0 / 0
Поменять символы в строке: то ли СтрЗаменить() не работает, то ли я что-то не так делаю.
    #37427930
Кантачес
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AHDP, ок. Немного видоизменил для задачи. Но тут уже для другой темы.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Поменять символы в строке: то ли СтрЗаменить() не работает, то ли я что-то не так делаю.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]