Skip to content

Commit cfb25cb

Browse files
authored
feat(core): add ScanStr function (#53)
Closes: #51
1 parent de0566c commit cfb25cb

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

src/Qsp.FSharp.Core/Defines.fs

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1127,7 +1127,57 @@ let procedures =
11271127
"`WAIT [#выражение]` - остановка выполнения программы на заданное количество миллисекунд (1 секунда = 1000 миллисекунд)."
11281128
] |> String.concat "\n"
11291129
"wait", dscr, arg Numeric
1130+
let dscr =
1131+
[
1132+
"`ScanStr $resultArray, $inputString, $pattern, [#groupNumber]` — процедура, которая разбирает входную строку на подстроки с помощью регулярного выражения."
1133+
""
1134+
"## Параметры"
1135+
""
1136+
"* `$resultArray` — название массива, в который будет записываться найденные подстроки"
1137+
"* `$inputString` — входная строка, в которой будут искаться подстроки"
1138+
"* `$pattern` — шаблон регулярного выражения"
1139+
"* `#groupNumber` — опциональный параметр, который определяет номер группы регулярного выражения. Если не указан или равен 0, то в массив будут добавляться строки, соответствующие всему регулярному выражению."
1140+
""
1141+
"## Примеры"
1142+
""
1143+
"```qsp"
1144+
"$богиЧерезРазделитель = 'Гестия, Гермес + Афродита, Арес,, Деметра&Гефест, Гера, Посейдон, Афина, Зевс, Артемида; Аполлон'"
1145+
"ScanStr 'боги', $богиЧерезРазделитель, '[а-яА-Я]+'"
1146+
"'В Древней Греции было <<ArrSize(\"боги\")>> богов, а именно:'"
1147+
"''"
1148+
"loop local i = 0 while i < ArrSize('боги') step i += 1:"
1149+
" '* <<$боги[i]>>'"
1150+
"end"
1151+
"```"
1152+
""
1153+
"Выведет:"
1154+
""
1155+
"```text"
1156+
"В Древней Греции было 12 богов, а именно:"
1157+
""
1158+
"* Гестия"
1159+
"* Гермес"
1160+
"* Афродита"
1161+
"* Арес"
1162+
"* Деметра"
1163+
"* Гефест"
1164+
"* Гера"
1165+
"* Посейдон"
1166+
"* Афина"
1167+
"* Зевс"
1168+
"* Артемида"
1169+
"* Аполлон"
1170+
"```"
1171+
]
1172+
|> String.concat "\n"
1173+
let os =
1174+
[
1175+
[| String; String; String |], ()
1176+
[| String; String; String; Numeric |], ()
1177+
] |> JustOverloads
1178+
"scanstr", dscr, os
11301179
]
1180+
11311181
let jump =
11321182
let dscr =
11331183
[

0 commit comments

Comments
 (0)