- - PR -
文字数を気にせずに取得する方法について
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-04-07 07:53
こんにちは
携帯JAVAで、以下のようにすると 端末の機種を取得することができるのですが、 String platform; platform = System.getProperty("Platform"); もし取得した端末の情報が非常に長い場合を想定して、 先頭から半角10文字までを取得したいと思います。 その場合、 platform.substring(0,10); で取得可能のなのですが、もし10文字未満の場合、 エミュレーターが強制終了します。 (おそらく文字数が少ないため、例外を起こす!?) なので、いったん platform.length()で文字数を取得して、 10文字未満と以上で処理を分ければ可能なのですが、 できればもっとすんなりと行える処理、を探しています。 (たとえば、文字数の長さを気にしなくても、取得できる処理) こちらの件について、何かアドバイスとかいただけないでしょうか? よろしくお願いします。 | ||||
|
投稿日時: 2005-04-07 08:51
携帯用のjavaで使えるかどうかは試していないのですが、
org.apache.commons.lang.StringUtils クラスの left メソッドあたりが使えないでしょうか? 参考 http://jakarta.apache.org/commons/lang/ | ||||
|
投稿日時: 2005-04-07 09:01
| ||||
|
投稿日時: 2005-04-07 11:11
ご要望に合いそうなものというと……ざっと眺めた感じ、StringBuffer#setLengthとかでしょうか。
「すんなり」というのが、どういう意味で書かれているのか正直よく分からないです。どういうのが「良いコード」なのかは状況によって(/大事に守りたい資源によって)異なります。 携帯上でということでしたら、守りたいものは実行ファイルサイズとか、CPU時間とか、メモリ空間とかではないかと思いますが……Morleyさんが守りたいのは何ですか? #個人的な感覚では「String#lengthで文字数を取得して処理分岐」が一番良さそうな気がしないでもないです。処理も速そうですし、可読性も高そうですので…… [ メッセージ編集済み 編集者: 永井和彦 編集日時 2005-04-07 11:23 ] | ||||
|
投稿日時: 2005-04-07 12:15
platform.substring(0,Math.min(10,platform.length()));
とか。携帯用で使えるかは知りません。 | ||||
|
投稿日時: 2005-04-07 12:21
ソースを確認してみたところ、if文で指定された文字数(今回の場合は10)以下の場合はそのままのString、それより大きい場合はsubstringを利用していました^^; (つまり、最初にMorleyさんが記述している内容と同じ意味のコーディングでした) 確認不足すいません。 | ||||
|
投稿日時: 2005-04-07 16:43
携帯用で Commons 使うかどうかは別にして、StringUtil#left は今回の要件を満たしていますよ。 最初の Morley さんのコードとは別物だと思いますが・・。 [追記] ロスさんの言っている意味が後でわかりました。 行っている手順として同じ意味ってことですね。 確認不足すいません。 [ メッセージ編集済み 編集者: でゅうく 編集日時 2005-04-07 16:51 ] | ||||
|
投稿日時: 2005-04-07 18:54
筋の悪いアドバイスが多数ついていますが(未記入さんを除き)
platform.length()で例外を避けるのが嫌なら、 IndexOutOfBoundsException をキャッチすれば良いだけの事です。 |