Erlang:获取字符串的前n个字符

jgzswidk  于 2022-12-08  发布在  Erlang
关注(0)|答案(4)|浏览(214)

我有信用卡号码,比如说5940043543536。出于安全考虑,我只想显示前四位数字。
在爱尔兰语中怎么能做到呢?

67up9zun

67up9zun1#

Erlang中的字符串只是一个整数列表,因此可以使用lists:sublist/3

1> String = "5940043543536".
"5940043543536"
2> lists:sublist(String, 1, 4).
"5940"

请注意,position参数从1开始,而不是从0开始。

lb3vh1jj

lb3vh1jj2#

如果您接收的是二进制(而不是字符串)

binary:part(<<"123455678901234">>, 1, 4).   
<<"2345">>

或者如果您需要最后四位数

binary:part(<<"123455678901234">>, {byte_size(<<"123455678901234">>), -4}).
<<"1234">>
tjvv9vkg

tjvv9vkg3#

较新版本的Erlang内置了字符串函数。

1> string:slice("123455678901234", 1, 4). 
"1234"

也有一个string:substring函数,它的工作方式是一样的,但是它对于slice来说已经过时了。

w51jfk4q

w51jfk4q4#

您可以尝试使用模式匹配:

1> String = "5940043543536".
"5940043543536"
2> [A,B,C,D|_] = String.         
"5940043543536"
3> [A,B,C,D].               
"5940"

或者您可以创建自己的函数,例如:

1> String = "5940043543536".
"5940043543536"
2> GetDigits = fun F(_, Acc, 0) -> lists:reverse(Acc); 
                   F([H|T], Acc, N) -> F(T, [H|Acc], N - 1) end.
#Fun<erl_eval.43.91303403>
3> GetDigits(String, [], 4).
"5940"

相关问题