Scala:如何屏蔽字符串的前N个字符
给定一个表示信用卡号的字符串Scala:如何屏蔽字符串的前N个字符,scala,Scala,给定一个表示信用卡号的字符串 val creditCardNo = "1111222233334444" 。。。如何使用*屏蔽前12个字符 val maskedCreditCardNo = "************4444" 只需在原始数字上使用drop或substring,并在正确的“*”数字前加上前缀: 替换所有数字符号,除非剩余4个字符: creditCardNo.replaceAll("\\d(?=\\d{4})", "*") 一种方法,您可以修改每个位置的字符值,在本例中是位置
val creditCardNo = "1111222233334444"
。。。如何使用*
屏蔽前12个字符
val maskedCreditCardNo = "************4444"
只需在原始数字上使用
drop
或substring
,并在正确的“*”数字前加上前缀:
替换所有数字符号,除非剩余4个字符:
creditCardNo.replaceAll("\\d(?=\\d{4})", "*")
一种方法,您可以修改每个位置的字符值,在本例中是位置
12
之前的字符值
creditCardNo.zipWithIndex.map (c => if (c._2 < 12) '*' else c._1 ).mkString
creditCardNo.zipWithIndex.map(c=>if(c._2<12)*”else c._1).mkString
请注意,尽管能够单独更改每个位置,但这并不是操作字符串的最有效方法。习惯用法是,
ns.patch(0,“*”*12,12)
。遗憾的是,som snytt没有将他的patch
注释作为一个答案,因为这是一个比正则表达式更惯用的解决方案(这甚至不能解决标题中所述的问题)。
creditCardNo.zipWithIndex.map (c => if (c._2 < 12) '*' else c._1 ).mkString