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