Skip to content

Commit

Permalink
feat(core): add ScanStr function
Browse files Browse the repository at this point in the history
Closes: #51
  • Loading branch information
gretmn102 committed Sep 9, 2024
1 parent 7254bbd commit 7e81a47
Showing 1 changed file with 50 additions and 0 deletions.
50 changes: 50 additions & 0 deletions src/Qsp.FSharp.Core/Defines.fs
Original file line number Diff line number Diff line change
Expand Up @@ -1127,7 +1127,57 @@ let procedures =
"`WAIT [#выражение]` - остановка выполнения программы на заданное количество миллисекунд (1 секунда = 1000 миллисекунд)."
] |> String.concat "\n"
"wait", dscr, arg Numeric
let dscr =
[
"`ScanStr $resultArray, $inputString, $pattern, [#groupNumber]` — процедура, которая разбирает входную строку на подстроки с помощью регулярного выражения."
""
"## Параметры"
""
"* `$resultArray` — название массива, в который будет записываться найденные подстроки"
"* `$inputString` — входная строка, в которой будут искаться подстроки"
"* `$pattern` — шаблон регулярного выражения"
"* `#groupNumber` — опциональный параметр, который определяет номер группы регулярного выражения. Если не указан или равен 0, то в массив будут добавляться строки, соответствующие всему регулярному выражению."
""
"## Примеры"
""
"```qsp"
"$богиЧерезРазделитель = 'Гестия, Гермес + Афродита, Арес,, Деметра&Гефест, Гера, Посейдон, Афина, Зевс, Артемида; Аполлон'"
"ScanStr 'боги', $богиЧерезРазделитель, '[а-яА-Я]+'"
"'В Древней Греции было <<ArrSize(\"боги\")>> богов, а именно:'"
"''"
"loop local i = 0 while i < ArrSize('боги') step i += 1:"
" '* <<$боги[i]>>'"
"end"
"```"
""
"Выведет:"
""
"```text"
"В Древней Греции было 12 богов, а именно:"
""
"* Гестия"
"* Гермес"
"* Афродита"
"* Арес"
"* Деметра"
"* Гефест"
"* Гера"
"* Посейдон"
"* Афина"
"* Зевс"
"* Артемида"
"* Аполлон"
"```"
]
|> String.concat "\n"
let os =
[
[| String; String; String |], ()
[| String; String; String; Numeric |], ()
] |> JustOverloads
"scanstr", dscr, os
]

let jump =
let dscr =
[
Expand Down

0 comments on commit 7e81a47

Please sign in to comment.