Iva*_*van 82 string int formatting scala
如何将长度转换Int为7个字符String,以便123转换为"0000123"?
huy*_*hjl 201
Java库具有非常好的(如优秀的)数字格式支持,可从StringOps丰富的String类访问:
scala> "%07d".format(123)
res5: String = 0000123
scala> "%07d".formatLocal(java.util.Locale.US, 123)
res6: String = 0000123
Run Code Online (Sandbox Code Playgroud)
编辑后期Scala 2.10:正如fommil所建议的,从2.10开始,还有一个格式化字符串插值器(不支持本地化):
val expr = 123
f"$expr%07d"
f"${expr}%07d"
Run Code Online (Sandbox Code Playgroud)
Pab*_*dez 33
简短回答:
"1234".reverse.padTo(7, '0').reverse
Run Code Online (Sandbox Code Playgroud)
答案很长:
Scala StringOps(包含Scala字符串对象因隐式转换而拥有的一组很好的方法)有一个padTo方法,它会在字符串中附加一定数量的字符.例如:
"aloha".padTo(10,'a')
Run Code Online (Sandbox Code Playgroud)
将返回"alohaaaaaa".请注意,String的元素类型是Char,因此单引号围绕着'a'.
你的问题是有点不同的,因为你需要预先考虑,而不是字符追加它们.这就是为什么你需要反转字符串,附加填充字符(因为字符串被反转,你现在将它们预先添加),然后再次反转整个事件以获得最终结果.
希望这可以帮助!
小智 27
的padding是由表示%02d为0被前缀以使长度2:
scala> val i = 9
i: Int = 9
scala> val paddedVal = f"${num}%02d"
paddedVal: String = 09
scala> println(paddedVal)
09
Run Code Online (Sandbox Code Playgroud)
def leftPad(s: String, len: Int, elem: Char): String = {
elem.toString * (len - s.length()) + s
}
Run Code Online (Sandbox Code Playgroud)