Author Topic: как рабтает команда STRREPLACE? / желательно добавить в хелповник  (Read 2697 times)

0 Members and 2 Guests are viewing this topic.

ksa-nsk

  • Освоившийся
  • **
  • Posts: 55
    • View Profile
прошу пояснить принцип работы команды 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

Понятно, что можно бахнуть циклом по количеству пробелов, но на мой взгляд, это функция сама должна делать.
« Last Edit: November 01, 2014, 05:53:19 PM by ksa-nsk »

Atas

  • Активный участник
  • ***
  • Posts: 147
    • View Profile
Re: как рабтает команда STRREPLACE?
« Reply #1 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]
« Last Edit: November 01, 2014, 01:59:51 PM by Atas »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: как рабтает команда STRREPLACE?
« Reply #2 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

ksa-nsk

  • Освоившийся
  • **
  • Posts: 55
    • View Profile
Re: как рабтает команда STRREPLACE?
« Reply #3 on: November 01, 2014, 05:50:39 PM »
спасибо, по справке прочитал, сразу не сообразил, как-то по-привычке, раз замена подстрок, значит замена, но в справку добавить про замену только первого вхождения было бы неплохо))))