Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: ksa-nsk on November 01, 2014, 10:41:20 AM

Title: как рабтает команда STRREPLACE? / желательно добавить в хелповник
Post by: ksa-nsk on November 01, 2014, 10:41:20 AM
прошу пояснить принцип работы команды STRREPLACE ("str", "substr1", "substr2"), т.к. в другом языке замена происходит замена ВСЕХ "substr1" на "substr2".
Здесь, если я правильно понимаю, замена идет только ПЕРВОГО вхождения.
Пример:
Code: (clickermann) [Select]

         $var = STRREADLN("test.txt", 1) // там для теста я поставил " 28.10.20   14 "
     print("$var=", $var)
$$var = STRREPLACE($var, " ", "z")  // хотел удалить все пробелы, для наглядности поставил "z"
     print("$var=", $var)
Результат:
13:38:45 $var= 28.10.20   14 
13:38:45 $var=z28.10.20   14

Понятно, что можно бахнуть циклом по количеству пробелов, но на мой взгляд, это функция сама должна делать.
Title: Re: как рабтает команда STRREPLACE?
Post by: Atas on November 01, 2014, 11:39:00 AM
В четвертой строке - $$var исправить нужно.
Во входящей строке 4 пробела, соответственно STRREPLACE выполняем 4 раза. Видимо так задумано.
Code: (clickermann) [Select]
$var = " 28.10.20   14 "
print("$var=", $var)

$var = STRREPLACE($var, " ", "z")  // хотел удалить все пробелы, для наглядности поставил "z"
print("$var=", $var)

$var = STRREPLACE($var, " ", "z")  // хотел удалить все пробелы, для наглядности поставил "z"
print("$var=", $var)

$var = STRREPLACE($var, " ", "z")  // хотел удалить все пробелы, для наглядности поставил "z"
print("$var=", $var)

$var = STRREPLACE($var, " ", "z")  // хотел удалить все пробелы, для наглядности поставил "z"
print("$var=", $var)

HALT
Результат:
11:31:13 $var= 28.10.20   14
11:31:13 $var=z28.10.20   14
11:31:13 $var=z28.10.20z  14
11:31:13 $var=z28.10.20zz 14
11:31:13 $var=z28.10.20zzz14

[spoiler=STRFILTER работает иначе... (цитата из справки Clickermann v4.11 (build 000))]

Синтаксис

STRFILTER ("str", "set", mode) - строковая функция; возвращает отфильтрованную строку

Параметры
str - входная строка
set - набор символов маски
mode - режим фильтрации

Если режим будет задан как 0, то из входной строки будут вырезаны все символы, указанные в маске
Если режим будет задан как 1, то из входной строки будут вырезаны все символы, кроме указанных в маске

Пример

print( strfilter("hello2000", "20", 0 ) ) // результат "hello"

print( strfilter("hello2000", "20", 1 ) ) // результат "2000"

[/spoiler]
Title: Re: как рабтает команда STRREPLACE?
Post by: Oraven on November 01, 2014, 02:43:42 PM
Для этого надо использовать STRFILTER

Code: (clickermann) [Select]
$var = TFREAD("test.txt", 1) // там для теста я поставил " 28.10.20   14 "
print("$var=", $var)
$var = STRFILTER($var, " ", 0)  // удалить все пробелы
print("$var=", $var)

HALT
Title: Re: как рабтает команда STRREPLACE?
Post by: ksa-nsk on November 01, 2014, 05:50:39 PM
спасибо, по справке прочитал, сразу не сообразил, как-то по-привычке, раз замена подстрок, значит замена, но в справку добавить про замену только первого вхождения было бы неплохо))))