使用List中的起点和终点在字符串中查找子字符串

时间:2017-01-12 07:09:26

标签: erlang substring

我有一个类似List = [{0,12},{0,12},{-1,0},{0,12},{0,4},{1,2}]和字符串Str = "https://www.youtube.com/watch?v=WQfdwsPao9E"的列表,现在我要使用列表中的起点和终点找到所有子字符串。

我希望在像["https://www","https://www",..]

这样的列表中返回子字符串

我试过用这个:

C=lists:map(fun({X,Y}) -> string:sub_string(Str,X,Y) end,List)

1 个答案:

答案 0 :(得分:1)

1> List = [{0,12},{0,12},{-1,0},{0,12},{0,4},{1,2}].
[{0,12},{0,12},{-1,0},{0,12},{0,4},{1,2}]
2> Str = "https://www.youtube.com/watch?v=WQfdwsPao9E".
"https://www.youtube.com/watch?v=WQfdwsPao9E"
3> Len = length(Str).
43
4> [string:sub_string(Str,max(1,X),min(Len,Y)) || {X,Y} <- List].
["https://www.","https://www.",[],"https://www.","http",
 "ht"]
5> 

您可能需要调整字符串中的索引以完全符合您的需要。

[edit]看起来我没有正确地解释元组的含义是什么。如果没有匹配,我认为它是{Fist_Char_Index,Char_Number}或{-1,0}。所以你应该使用:

[string:sub_string(Str,X+1,X+Y) || {X,Y} <- List, {X,Y} =/= {-1,0}].