给定一个代表信用卡号码的字符串......
val creditCardNo = "1111222233334444"
...如何使用*
屏蔽前12个字符?
val maskedCreditCardNo = "************4444"
答案 0 :(得分:14)
只需在原始号码上使用drop
或substring
,并添加正确的" *":
"*" * 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
请注意,尽管能够单独更改每个位置,但这并不是操作字符串的最有效方法。