当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


erlang split(Subject, Pattern, Options)用法及代码示例


split(Subject, Pattern, Options) -> Parts
OTP R14B
类型:
Subject = binary()
Pattern = binary() | [binary()] | cp()
Options = [Option]
Option = {scope, part()} | trim | global | trim_all
Parts = [binary()]

Subject 拆分为基于 Pattern 的二进制文件列表。如果未指定选项global,则只有Subject 中第一次出现Pattern 才会产生拆分。

Subject 中找到的 Pattern 部分不包含在结果中。

例子:

1> binary:split(<<1,255,4,0,0,0,2,3>>, [<<0,0,0>>,<<2>>],[]).
[<<1,255,4>>, <<2,3>>]
2> binary:split(<<0,1,0,0,4,255,255,9>>, [<<0,0>>, <<255,255>>],[global]).
[<<0,1>>,<<4>>,<<9>>]

选项摘要:

{scope, part()}

工作原理如下match/3matches/3。请注意,这仅定义了搜索匹配字符串的范围,它不会在分割之前剪切二进制文件。范围之前和之后的字节保留在结果中。请参阅下面的示例。

trim

删除结果的尾随空白部分(就像trimre:split/3.

trim_all

删除结果的所有空白部分。

global

重复分割直到Subject已经筋疲力尽了。概念上的选择global对返回的位置进行拆分工作matches/3,而它通常适用于返回的位置match/3.

作用域与分割前将二进制文件分开的示例:

1> binary:split(<<"banana">>, [<<"a">>],[{scope,{2,3}}]).
[<<"ban">>,<<"na">>]
2> binary:split(binary:part(<<"banana">>,{2,3}), [<<"a">>],[]).
[<<"n">>,<<"n">>]

返回类型始终是全部引用 Subject 的二进制文件列表。这意味着 Subject 中的数据不会复制到新的二进制文件,并且在不再引用拆分结果之前,无法对 Subject 进行垃圾回收。

对于说明Pattern, 看compile_pattern/1.

相关用法


注:本文由纯净天空筛选整理自erlang.org大神的英文原创作品 split(Subject, Pattern, Options) -> Parts。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。