powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Странный функционал Replace с параметрами start и count
5 сообщений из 5, страница 1 из 1
Странный функционал Replace с параметрами start и count
    #39858159
trigubovichaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Давно пользуюсь функцией Replace в VB6 и VBS, но до сегодняшнего дня не использовал ее опциональные параметры start и count . Потребовалось произвести замену нескольких символов в строке, пропустив пару-тройку первых, где нахождение заменяемых было допустимо. Предполагаемое решение получилось примерно таким:
Код: vbnet
1.
2.
3.
Dim S
 S = Replace("1;2;3;4;5", ";", "-", 3, -1)
 ' S = "1;2-3-4-5"   'Ожидаемый результат


...как, собственно, его рекомендует эта страничка , первая в результатах Google по запросу replace в vbs .
Однако реальный результат меня удивил настолько, что я снова решил возыметь наглость создать тему на SQL.ru и прочитать документацию на Replace от разработчика до конца .
Код: vbnet
1.
 ' S = "2-3-4-5"   'А на самом-то деле-то результат-то такой!


Такие дела.
Простите, что потратил ваше время
...
Рейтинг: 0 / 0
Странный функционал Replace с параметрами start и count
    #39858239
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не знаю, каким местом Вы смотрите.

описание синтаксисаReplace(expression, find, replace[, start[, count[, compare]]])

Раскладываем Ваш опус:

Код: vbnet
1.
S = Replace(expression := "1;2;3;4;5", find := ";", replace := "-", start := 3, count := -1)



Теперь разбираем.

expression := "1;2;3;4;5" - это в чём заменять
find := ";" - это что искать/заменять
replace := "-" - это на что заменять найденное
start := 3 - это откуда начинать. Третий символ исходной строки - это символ "2".
count := -1 - это сколько заменять. Значение -1 означает "всё, что найдётся".

Итак, что в остатке. Взять строку "1;2;3;4;5". Начать поиск/замену с третьего символа, т.е. в подстроке "2;3;4;5". Найти все ";" и заменить их на "-".

Ну и теперь скажите, чем результат отличается от описания?
...
Рейтинг: 0 / 0
Странный функционал Replace с параметрами start и count
    #39858269
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
trigubovichaa,

дополню Akina. Присмотритесь к описанию результата в справке внимательно:
авторВозвращаемое значение функции Replace — это строка с выполненными подстановками, которая начинается с позиции, заданной с помощью Start и завершается в конце строки выражения . Это не копия исходной строки с начала до конца.
...
Рейтинг: 0 / 0
Странный функционал Replace с параметрами start и count
    #39858673
trigubovichaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, да вроде тем же, чем и большинство, о чем косвенно, все еще надеюсь, дал понять в своем посте:
trigubovichaa решил возыметь наглость создать тему на SQL.ru и прочитать документацию на Replace от разработчика до конца .
Там даже ссылочка указана. Если что, по ней можно сходить и понять, что я был вкурсе насчет
The_PristВозвращаемое значение функции Replace — это строка с выполненными подстановками, которая начинается с позиции, заданной с помощью Start и завершается в конце строки выражения . Это не копия исходной строки с начала до конца.
о чем и привел фрагмент
Код: vbnet
1.
 ' S = "2-3-4-5"   'А на самом-то деле-то результат-то такой!


Своим постом я хотел привлечь внимание таких же невнимательных, как я, к странному функционалу Replace от VBS, VBA, VB6.
Вот Вы, Akina , не находите странным обрезание исходной строки функцией, призванной (исходя из названия) просто заменять фрагменты строки, как это делают аналогичные функции в других языках?

Невнимательные ребята с http://gsbelarus.com/gs/wiki , например, так же как и я считают, что Replace должна делать "replace", а никак не "cut off", о чем пишут здесь . Не поленитесь глянуть, это первая (!!!) строка в результатах поиска по запросу replace в vbs в гугле.

Если бы мне нужно было резать начало строки, я бы воспользовался Right , на мой взгляд, очевиднейшим средством в сравнении с Replace .

Никого не хотел обидеть!
...
Рейтинг: 0 / 0
Странный функционал Replace с параметрами start и count
    #39859128
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
trigubovichaaСвоим постом я хотел привлечь внимание таких же невнимательных, как я, к странному функционалу Replace от VBS, VBA, VB6.
Вот Вы, Akina , не находите странным обрезание исходной строки функцией, призванной (исходя из названия) просто заменять фрагменты строки, как это делают аналогичные функции в других языках?Это называется implementation-related. Как автор захотел, так и реализовал. А кому не нравится - пишет свою функцию. И я не нахожу в этом ничего странного, я пользуюсь тем, что есть, в той форме, какой есть, а при необходимости корректирую до нужного мне поведения своим кодом.

trigubovichaaНевнимательные ребята с http://gsbelarus.com/gs/wiki , например, так же как и я считают, что Replace должна делать "replace", а никак не "cut off", о чем пишут здесь .
Ничего они не "пишут". Они тупо и бессмысленно перевели часть мануала , пролюбив при этом важное уточнение
Remarks
The return value of the Replace function is a string, with substitutions made, that begins at the position specified by start and concludes at the end of the expression string . It is not a copy of the original string from start to finish.

В общем, "никогда не читайте за завтраком советских газет херово переведённых мануалов".
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Странный функционал Replace с параметрами start и count
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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