當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。