2011年10月30日

[Android] 文字列から数値への変換でハマったこと

文字列を数値に変換しようとしてハマったけど、解決したので備忘メモ。

input(文字列「1234」)というのが数値に変換したい文字列だとして、Long型に変換したい場合、

Long out = Long.valueOf(input);
Long out = Long.parseInt(input);
Long out = new Long(input);

のいずれかで変換できます。
でも、

java.lang.NumberFormatException

というエラーが出て解決できなくて困っていました。
そのとき、

input.length()

を出力してみたら、

5

と出力されました。
あれ?4が出力されるのを期待していたのに……。
ということで、さらに調べてみたら末尾に数値以外の情報が含まれていたようでした。
普通に Log.d() で出力しても気づかなかった。。。

そこで、以下の対処をしたら無事とおりました。

Long.parseLong(input.substring(0, input.length() - 1))

input は InputStream から String に変換したときに作り出した文字列なので、
その変換のときに余計なものが入ってしまったようです。

変換処理の修正方法が思いつかなかったので、とりあえず上記の方法で一時対応。
もっとスマートに解決したい・・・。
posted by be-style at 14:47| Comment(0) | Android
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]