我有信用卡号码,比如说5940043543536。出于安全考虑,我只想显示前四位数字。在爱尔兰语中怎么能做到呢?
67up9zun1#
Erlang中的字符串只是一个整数列表,因此可以使用lists:sublist/3:
lists:sublist/3
1> String = "5940043543536". "5940043543536" 2> lists:sublist(String, 1, 4). "5940"
请注意,position参数从1开始,而不是从0开始。
1
0
lb3vh1jj2#
如果您接收的是二进制(而不是字符串)
binary:part(<<"123455678901234">>, 1, 4). <<"2345">>
或者如果您需要最后四位数
binary:part(<<"123455678901234">>, {byte_size(<<"123455678901234">>), -4}). <<"1234">>
tjvv9vkg3#
较新版本的Erlang内置了字符串函数。
1> string:slice("123455678901234", 1, 4). "1234"
也有一个string:substring函数,它的工作方式是一样的,但是它对于slice来说已经过时了。
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"
4条答案
按热度按时间67up9zun1#
Erlang中的字符串只是一个整数列表,因此可以使用
lists:sublist/3
:请注意,position参数从
1
开始,而不是从0
开始。lb3vh1jj2#
如果您接收的是二进制(而不是字符串)
或者如果您需要最后四位数
tjvv9vkg3#
较新版本的Erlang内置了字符串函数。
也有一个string:substring函数,它的工作方式是一样的,但是它对于slice来说已经过时了。
w51jfk4q4#
您可以尝试使用模式匹配:
或者您可以创建自己的函数,例如: