Scala:如何屏蔽字符串的前N个字符

时间:2015-03-28 19:21:21

标签: scala

给定一个代表信用卡号码的字符串......

val creditCardNo = "1111222233334444"

...如何使用*屏蔽前12个字符?

val maskedCreditCardNo = "************4444"

3 个答案:

答案 0 :(得分:14)

只需在原始号码上使用dropsubstring,并添加正确的" *":

"*" * 12 + (creditCardNo drop 12)

答案 1 :(得分:6)

替换所有数字符号,除非剩下4个字符:

creditCardNo.replaceAll("\\d(?=\\d{4})", "*")

答案 2 :(得分:1)

一种方法,您可以修改每个位置的字符值,在这种情况下,位置12之前,

creditCardNo.zipWithIndex.map (c => if (c._2 < 12) '*' else c._1 ).mkString

请注意,尽管能够单独更改每个位置,但这并不是操作字符串的最有效方法。