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

时间:2018-05-22 16:17:40

标签: erlang

我有信用卡号码,让我们说5940043543536.出于安全考虑,我只想显示前四位数字。

如何在erlang中做到这一点?

4 个答案:

答案 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"