2017-06-20 170 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