Что нового

Некорректная обработка параметра casesense в StringReplace

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Пример:

Код:
$sStr = StringReplace('Some Text', 'text', 'data', 0, 2)
ConsoleWrite($sStr & @LF)


текст не заменяется, хотя в справке написано:
2 = не учитывать регистр, используется основное / быстрое сравнение
хотя на самом деле регистр учитывается.

В StringInStr с этим проблем нет, это баг или как? :scratch:


P.S.
И вообще, что означает «основное / быстрое сравнение»?
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
CreatoR
И вообще, что означает «основное / быстрое сравнение»?
На момент перевода я этого ещё не знал, но в процессе общения на офсайте выяснилось, что это работает для английского текста в пределах 0-127 символов. То есть какой то механизм не делает вызова получения символов текущего локального языка, ведь в разных странах свой язык и нужно получить эти символы согласно кодировке (например 1251). В итоге для англоговорящих этот ключ быстрее работает, если они не заботятся о поддержки программы на других языках. Вот тема в который был спор про скорость и Beege стал использовать флаг 2.
Так как документирования нет поэтому это всё мои предположения.
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
AZJIO [?]
был спор про скорость и Beege стал использовать флаг 2
Я тоже уже давно его использую, но только сегодня (!) выяснил что этот флаг некорректно работает в StringReplace.
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Верх