2017-06-20 103 views
1

我很困惑与斯卡拉字符和int列表。这里是我的例子:列表字符串int转换为斯卡拉

scala> var s = "123456" 
s: String = 123456 

scala> s.map(_.toInt) 
res0: scala.collection.immutable.IndexedSeq[Int] = Vector(49, 50, 51, 52, 53, 54) 

scala> s.map(_.toInt).sum 
res1: Int = 309 

字符被转换成ASCII码我假设,如何转换其值的字符?

谢谢

回答

7

s.map(_.asDigit).sum是正确的Scala API方法。 toInt将返回符号的ASCI代码,而不是数字表示。

scala> "123456".map(_.asDigit).sum 
res0: Int = 21 
3

您可以使用Character.getNumericValue(char)

s.map(Character.getNumericValue(_)) 

输出

res2: scala.collection.immutable.IndexedSeq[Int] = Vector(1, 2, 3, 4, 5, 6) 

另一种选择,将减去'0'

s.map(_ - '0') 

获得相同的结果。

+0

第二个选项很有趣,谢谢! – ImbaBalboa