Regex 从字符串中插入和删除字符
假设我有一个字符串“customer”,我想在末尾添加Regex 从字符串中插入和删除字符,regex,elixir,Regex,Elixir,假设我有一个字符串“customer”,我想在末尾添加s 客户 我还有另一个字符串,如“users”。如何在最后删除s,使其成为user 最好的方法是什么?添加字符 对于长字符串更有效: with [_ | tail] <- "users" |> to_charlist |> :lists.reverse, do: tail |> :lists.reverse |> to_string 很确定这不是最有效的。它是O(n)而使用binary\u部分和byte\u
s
客户
我还有另一个字符串,如“users”
。如何在最后删除s
,使其成为user
最好的方法是什么?添加字符
对于长字符串更有效:
with [_ | tail] <- "users" |> to_charlist |> :lists.reverse,
do: tail |> :lists.reverse |> to_string
很确定这不是最有效的。它是
O(n)
而使用binary\u部分和byte\u大小的解决方案将是O(1)
@Dogbert,我不确定binary\u部分O(1)
binary\u部分
将如何共享原始二进制文件的内存。仅当您尝试预加某些内容或附加两次时,才会复制它@的确是道伯特;非常感谢你给我的链接,我以前不知怎么错过了。已更新。我知道您喜欢它,但无需在此处使用本着“教人钓鱼”的精神——在字符串末尾添加字符称为串联。删除字符通常称为截断。另外,要小心“最佳”一词,因为有很多方法可以决定什么是“最佳”。最短代码?最快的执行?这可能是两种完全不同的方法。
String.trim_trailing("users", "s")
#⇒ "user"
with [_ | tail] <- "users" |> to_charlist |> :lists.reverse,
do: tail |> :lists.reverse |> to_string
str = "users"
sz = :erlang.byte_size(str),
:erlang.binary_part(str, {0, sz - 1})