2016-10-07 20 views
1

数値の各桁をintに変換したい。ここで私が得る結果は、ASCIIコードであるScala:文字列の各桁を整数に変換する

for (in <- lines) { 
    for (c <- in) { 
     val ci = c.toInt 
     if (ci == 0) { 
      // do stuff 
     } 
    } 
} 

私のコード、すなわち、1は私が値1 答えは簡単です探している49を与えている、私は知っています。 Scalaコースが2週間で始まるまで、私自身のブートストラップで自分自身を引き上げようとしています。どんな支援も感謝して受け入れられました。

+0

入力の例を挙げてください。つまり、「1234」は数字「1234」を返す必要がありますか? –

+0

ありがとうKevin、私は問題を解決しました。 asDigitは私が探していたものでした。私は1234が1と2と3と4になることを欲しかったので、私はそれぞれの数字を別々に処理することができました。私は49、50、51などを得ていました。アスキーゼロを引くのは簡単だったでしょうが、もし私がそれを低く抑えれば、私の出芽Scalaのキャリアにとっては貧弱なスタートになると感じました。 – Fred

+0

負の数値はどのように処理する必要がありますか?言い換えれば、 '-1234'の出力は何ですか? –

答えて

1

一つの可能​​な解決策は、次のとおりです。

for(in <- lines) { 
    in.toString.map(_.asDigit).foreach { i => 
     if(i == 1) { 
      //do stuff 
     } 
    } 
} 

と出力/ Wよりコンパクト:

lines.foreach(in => in.toString.map(_.asDigit).filter(_ == 1).foreach(i => println(s"found $i in $in."))) 

行がすでに文字列のコレクションである場合は、in.toStringに.toStringを省略します。

+1

asDigitが答えです。どうもありがとう。私は質問が以前に尋ねられていることがわかりました:http://stackoverflow.com/questions/16241923/scala-char-to-int-conversion 私は文字列を検索したので、私はそれを見ませんでした。 – Fred

1

あなたはこれを持つことができます。これは、数のデジタル化につながる

val number = 123456 
//convert Int to String and do transformation for each character to Digit(Int) 
val digitsAsList = number.toString.map(_.asDigit) 

。そのコレクションでは、フィルタリング、マッピング、圧縮から何かを行うことができます。このページのList APIをチェックアウトすることができます:http://www.scala-lang.org/api/2.11.8/#scala.collection.immutable.List

関連する問題