如何在长生不老药中分割字符串以保持分隔符?

时间:2019-09-20 00:46:05

标签: elixir

我有一个带有特殊字符的字符串:

>> text = "ab()-cdef"

我想将字母与列表中的特殊字符分开

>> list = ["ab", "(" , ")" ,"-", "cdef"]

我尝试过

list = String.split(text,["(",")","-"], trim: false)

但是我失去了特殊字符

list = ["ab","","","","cdef"]

3 个答案:

答案 0 :(得分:0)

我使用了type Entity struct { Guid string `json:"guid"` } type Result struct { Entities Entity `json:"entities"` } type EntitySearch struct { Results Result `json:"results"` } type Actor struct { EntitySearch EntitySearch `json:"entitySearch"` } type Response struct { Actor Actor `json:"actor"` } fmt.Println(resp.Actor.EntitySearch.Results.Entities.Guid)

Regex.scan/2

我不得不转义一些特殊字符,例如~r{\(|\)|-|[a-z]*} |> Regex.scan("ab()-cdef") |> List.flatten() |> Enum.filter(fn s -> String.length(s) > 0 end) 变成( –并用竖线分隔特殊字符。

答案 1 :(得分:0)

您快到了。使用lookarounds将字符串拆分为非字母。

String.split "ab()-cdef", ~r/(?<=\W)|(?=\W)/
#⇒ ["ab", "(", ")", "-", "cdef"]

答案 2 :(得分:0)

documentation for Regex.split 提到了 WriterStrategy 选项:

FormatWriterStream

请注意,当 String.split 与正则表达式一起使用时,您也可以使用此选项。