Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 从字符串中插入和删除字符_Regex_Elixir - Fatal编程技术网

Regex 从字符串中插入和删除字符

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

假设我有一个字符串“customer”,我想在末尾添加
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})