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
String 如何删除Elixir中字符串的前n个字符?_String_Elixir - Fatal编程技术网

String 如何删除Elixir中字符串的前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" "

我有一个字符串列表。这些字符串中的每一个都以我想去掉的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"
"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