String 如何删除Elixir中字符串的前n个字符?
我有一个字符串列表。这些字符串中的每一个都以我想去掉的n个字符开头 我不能使用像String 如何删除Elixir中字符串的前n个字符?,string,elixir,String,Elixir,我有一个字符串列表。这些字符串中的每一个都以我想去掉的n个字符开头 我不能使用像“123”new\u string=old\u string这样的东西,因为字符可以是任何东西 所以我想这样做: my_list>Enum.map(fn(str)-> #从str中删除n个前导字符 (完) 你知道我是如何做到这一点的吗?你可以使用String.slice/2删除字符串的前N个字符,使用binary\u part/3或模式匹配删除字符串的前N个字节 设置: iex(1)> a = "abc" "
“123”new\u string=old\u string这样的东西,因为字符可以是任何东西
所以我想这样做:
my_list>Enum.map(fn(str)->
#从str中删除n个前导字符
(完)
你知道我是如何做到这一点的吗?你可以使用String.slice/2
删除字符串的前N个字符,使用binary\u part/3
或模式匹配删除字符串的前N个字节
设置:
iex(1)> a = "abc"
"abc"
iex(2)> b = "πr²"
"πr²"
删除字符串的前两个图示:
iex(3)> String.slice(a, 2..-1)
"c"
iex(4)> String.slice(b, 2..-1)
"²"
iex(5)> binary_part(a, 2, byte_size(a) - 2)
"c"
iex(6)> binary_part(b, 2, byte_size(b) - 2)
"r²"
iex(7)> remove = 2
2
iex(8)> <<_::binary-size(remove), rest::binary>> = a; rest
"c"
iex(9)> <<_::binary-size(remove), rest::binary>> = b; rest
"r²"
删除字符串的前2个字节:
iex(3)> String.slice(a, 2..-1)
"c"
iex(4)> String.slice(b, 2..-1)
"²"
iex(5)> binary_part(a, 2, byte_size(a) - 2)
"c"
iex(6)> binary_part(b, 2, byte_size(b) - 2)
"r²"
iex(7)> remove = 2
2
iex(8)> <<_::binary-size(remove), rest::binary>> = a; rest
"c"
iex(9)> <<_::binary-size(remove), rest::binary>> = b; rest
"r²"
iex(5)>二进制部分(a,2,字节大小(a)-2)
“c”
iex(6)>二进制部分(b,2,字节大小(b)-2)
“r²”
iex(7)>移除=2
2.
iex(8)>=a;休息
“c”
iex(9)>=b;休息
“r²”
另一种选择:
defmodule-StringExtensions做什么
def首先删除字符(s,n)do
{uu,new_string}=s |>string.codepoints()|>Enum.split(n)
新建_字符串|>Enum.join()
结束
结束
然后会这样使用:
l=[“abcdefg”、“hijklmno”、“pqrstuv”]
l2=l |>Enum.map(fn str->StringExtensions.remove_first_n_chars(str,2)end)#l2->[“cdefg”、“jklmno”、“rstuv”]
只是想提供一个潜在的替代品,FWIW