Elixir 如何在长生不老药保持分离器中拆分字符串?
我有一个带有特殊字符的字符串:Elixir 如何在长生不老药保持分离器中拆分字符串?,elixir,Elixir,我有一个带有特殊字符的字符串: >> text = "ab()-cdef" 我想把字母和列表中的特殊字符分开 >> list = ["ab", "(" , ")" ,"-", "cdef"] 我试过了 list = String.split(text,["(",")","-"], trim: false) 但是我失去了特殊的角色 list = ["ab","","","","cdef"] 我使用了Regex.scan/2 ~r{\(|\)|-|[a-z]*} |&
>> text = "ab()-cdef"
我想把字母和列表中的特殊字符分开
>> list = ["ab", "(" , ")" ,"-", "cdef"]
我试过了
list = String.split(text,["(",")","-"], trim: false)
但是我失去了特殊的角色
list = ["ab","","","","cdef"]
我使用了
Regex.scan/2
~r{\(|\)|-|[a-z]*}
|> Regex.scan("ab()-cdef")
|> List.flatten()
|> Enum.filter(fn s -> String.length(s) > 0 end)
我必须转义一些特殊字符,例如,
(
变成了\(
)并用管道分隔特殊字符。您就快到了。用于在非字母上拆分字符串
String.split“ab()-cdef”,~r/(?提到:include_captures
选项:
iex>Regex.split(~r{(x)},“Elixir”,include_捕获:true)
[“Eli”、“x”、“ir”]
iex>Regex.split(~r{a(?b)c},“abc”,on:[:second],include_-captures:true)
[“a”、“b”、“c”]
请注意,当与正则表达式一起使用时,也可以使用此选项