我有信用卡号码,让我们说5940043543536.出于安全考虑,我只想显示前四位数字。
如何在erlang中做到这一点?
答案 0 :(得分:5)
Erlang中的字符串只是一个整数列表,因此您可以使用lists:sublist/3
:
1> String = "5940043543536".
"5940043543536"
2> lists:sublist(String, 1, 4).
"5940"
请注意,position参数从1
而非0
开始。
答案 1 :(得分:3)
新版本的Erlang内置了字符串函数。对于你的情况
function addTotal(checkValue, openAmount) {
if(checkValue)
totalOpenAmount += openAmount;
else
totalOpenAmount -= openAmount;
if(blnUpdateCheckAll) updateAllChecked();
document.getElementById('divTotalPayAmount').innerHTML = totalOpenAmount.toFixed(2).toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,');
}
还有一个字符串:substring函数,它的工作方式相同,但它已经被折旧了。
答案 2 :(得分:3)
如果您正在接收二进制(而不是字符串)
binary:part(<<"123455678901234">>, 1, 4).
<<"2345">>
或者如果你需要得到最后四位数
binary:part(<<"123455678901234">>, {byte_size(<<"123455678901234">>), -4}).
<<"1234">>
答案 3 :(得分:0)
您可以尝试使用模式匹配:
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"