- Справка Scilab
- Строки
- ascii
- asciimat
- blanks
- char
- convstr
- emptystr
- evstr
- grep
- isalphanum
- isascii
- isdigit
- isletter
- isnum
- justify
- length
- part
- prettyprint
- regexp
- sci2exp
- strcat
- strchr
- strcmp
- strcspn
- strindex
- string
- stripblanks
- strncpy
- strrchr
- strrev
- strsplit
- strspn
- strstr
- strsubst
- strtod
- strtok
- tokenpos
- tokens
Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function
strsplit
разделение единой строки по заданным позициям или шаблонам
Синтаксис
chunks = strsplit(string) chunks = strsplit(string, indices) [chunks, matched_separators] = strsplit(string, separators) [chunks, matched_separators] = strsplit(string, separators, limit) [chunks, matched_separators] = strsplit(string, regexp) [chunks, matched_separators] = strsplit(string, regexp, limit)
Аргументы
- string
- единая символьная строка, которую нужно разделить. Поддерживаются расширенные символы UTF8.
- indices
- вектор индексов в порядке возрастания в интервале
[1, length(string)-1]
. - separators
- матрица строк, искомых в
string
и используемых в качестве ножниц. Поддерживаются расширенные символы UTF8. - regexp
- единая строка, начинающаяся и оканчивающаяся символом "/"
и определяющая шаблон регулярного выражения, чувствительного к регистру,
используемая в качестве разделителя разделения. Опция
regexp
может не использоваться после завершающего разделителя "/". Регулярное выражение может включать в себя расширенные символы UTF8. Символы "/" и "\", используемые в телеregexp
должны быть защищены как "\/" и "\\". Например:"/k.{2}o/"
. - chunks
- столбец строк с
length(indices)+1
элементов, соответствующим разделённым кусочкам. - matched_separators
- столбец строк размером
size(chunks,1)-1
: совпавшие разделители или шаблоны выражений. - limit
- целое число > 0: максимальное число найденных и использованных
разделителей в
string
. Если она включает в себя больше случаев обнаружений разделителей, то её неразделённый остаток возвращается в последнем кусочке вchunks($)
.
Описание
strsplit(string) разделяет string
на все её отдельные символы.
strsplit(string, indices) разделяет
string
по указанным позициям символам в векторе
indices
. Символы в этих индексах являются началом
возвращаемых кусочков chunks
.
strsplit(string, separators) разделяет
string
по позициям после любого
совпавшего разделителя среди строк separators
.
Найденные и использованные разделители удаляются из остатков кусочков.
strsplit(string, "")
эквивалентно
strsplit(string)
.
strsplit(string, regexp) делает то же самое,
за исключением того, что string
проверяется по указанному
регулярному выражению, используемому как "унифицированный разделитель", вместо
любого "постоянного" разделителя среди ограниченного набора
separators
.
Если string
начинается с совпавшего разделителя или выражения, то
chunks(1)
является набором из ""
.
Если string
оканчивается совпавшим разделителем или
выражением, то ""
добавляется в конец последнего элемента
chunks
.
Если не найдено ни одного совпавшего разделителя или регулярного выражения в
string
, то она возвращается как есть в chunks
.
Это будет заметно в случае для string=""
.
Без опции limit
любая строка string
,
включающая n
разделителей, будет разделена на
n+1
кусочков.
strsplit(string, separators, limit) или
strsplit(string, regexp, limit) будет
искать совпадающий разделитель или выражение для максимального количества
limit
. Если затем останутся совпадения в необработанном
остатке string
, то этот остаток будет возвращён как есть в
chunks($)
.
[chunks, matched_separators] = strsplit(string,…)
возвращает столбец совпавших разделителей или выражений, в дополнению к
chunks
.
Тогда strcat([chunks' ; [matched_separators' ""]])
должен
быть равным string
.
Сравнение strsplit() и tokens():
|
Примеры
Разделение по указанным индексам:
strsplit("Scilab")' strsplit("αβδεϵζηθικλμνξοπρστυφϕχψω", [1 6 11])
--> strsplit("Scilab")' ans = "S" "c" "i" "l" "a" "b" --> strsplit("αβδεϵζηθικλμνξοπρστυφϕχψω", [1 6 11]) ans = "α" "βδεϵζ" "ηθικλ" "μνξοπρστυφϕχψω"
Разделение по совпавшим разделителям:
strsplit("aabcabbcbaaacacaabbcbccaaabcbc", "aa") // разделение начинается с разделителя => "" в начале кусочка // Последовательные разделители не сжимаются: strsplit("abbcccdde", "c")' // С несколькими возможными разделителями: t = "aabcabbcbaaacacaabbcbccaaabcbc"; [c, s] = strsplit(t, ["aa" "bb"]); c', s' strcat([c';[s' ""]]) == t // Ограничим число разделений до 4, => 4 кусочка + необработанный остаток: strsplit("aabcabbcbaaacacaabbcbccaaabcbc", ["aa" "bb"], 4) // Разделение строки, заканчивающейся разделителем даёт конечный "": strsplit("aabcabbcbaaacacaabbcbccaaabcbc", "cbc")'
--> strsplit("aabcabbcbaaacacaabbcbccaaabcbc", "aa") // t starts with the separator => heading "" chunk ans = "" "bcabbcb" "acac" "bbcbcc" "abcbc" --> // Consecutive separators are not squeezed: --> strsplit("abbcccdde", "c")' ans = "abb" "" "" "dde" --> // With several possible separators: --> t = "aabcabbcbaaacacaabbcbccaaabcbc"; --> [c, s] = strsplit(t, ["aa" "bb"]); --> c', s' ans = "" "bca" "cb" "acac" "" "cbcc" "abcbc" ans = "aa" "bb" "aa" "aa" "bb" "aa" --> strcat([c';[s' ""]]) == t ans = T --> // Let's limit the number of split to 4, => 4 chunks + unprocessed tail: --> strsplit("aabcabbcbaaacacaabbcbccaaabcbc", ["aa" "bb"], 4)' ans = "" "bca" "cb" "acac" "bbcbccaaabcbc" --> // Splitting a string ending with a separator yields a final "": --> strsplit("aabcabbcbaaacacaabbcbccaaabcbc", "cbc")' ans = "aabcabbcbaaacacaabb" "caaab" ""
Использование регулярного выражения в качестве ножниц:
[c, s] = strsplit("C:\Windows\System32\OpenSSH\", "/\\|:/"); c', s' [c, s] = strsplit("abcdef8ghijkl3mnopqr6stuvw7xyz", "/\d+/", 2); c', s'
--> [c, s] = strsplit("C:\Windows\System32\OpenSSH\", "/\\|:/"); --> c', s' ans = "C" "" "Windows" "System32" "OpenSSH" "" ans = ":" "\" "\" "\" "\" --> [c, s] = strsplit("abcdef8ghijkl3mnopqr6stuvw7xyz", "/\d+/", 2); --> c', s' ans = "abcdef" "ghijkl" "mnopqr6stuvw7xyz" ans = "8" "3"
Смотрите также
Report an issue | ||
<< strrev | Строки | strspn >> |