- PR -

文字数を気にせずに取得する方法について

投稿者投稿内容
Morley
会議室デビュー日: 2003/02/27
投稿数: 18
投稿日時: 2005-04-07 07:53
こんにちは
携帯JAVAで、以下のようにすると
端末の機種を取得することができるのですが、

String platform;
platform = System.getProperty("Platform");

もし取得した端末の情報が非常に長い場合を想定して、
先頭から半角10文字までを取得したいと思います。
その場合、

platform.substring(0,10);

で取得可能のなのですが、もし10文字未満の場合、
エミュレーターが強制終了します。
(おそらく文字数が少ないため、例外を起こす!?)
なので、いったん platform.length()で文字数を取得して、
10文字未満と以上で処理を分ければ可能なのですが、
できればもっとすんなりと行える処理、を探しています。
(たとえば、文字数の長さを気にしなくても、取得できる処理)
こちらの件について、何かアドバイスとかいただけないでしょうか?
よろしくお願いします。
ロス
常連さん
会議室デビュー日: 2005/03/25
投稿数: 26
投稿日時: 2005-04-07 08:51
携帯用のjavaで使えるかどうかは試していないのですが、

org.apache.commons.lang.StringUtils クラスの left メソッドあたりが使えないでしょうか?

参考 http://jakarta.apache.org/commons/lang/
未記入
ぬし
会議室デビュー日: 2004/09/17
投稿数: 667
投稿日時: 2005-04-07 09:01
コード:
String platform = (System.getProperty("Platform") + "          ").substring(0,10).trim();

永井和彦
ぬし
会議室デビュー日: 2002/07/03
投稿数: 276
お住まい・勤務地: 東京都
投稿日時: 2005-04-07 11:11
ご要望に合いそうなものというと……ざっと眺めた感じ、StringBuffer#setLengthとかでしょうか。

引用:

10文字未満と以上で処理を分ければ可能なのですが、
できればもっとすんなりと行える処理、を探しています。
(たとえば、文字数の長さを気にしなくても、取得できる処理)
こちらの件について、何かアドバイスとかいただけないでしょうか?



「すんなり」というのが、どういう意味で書かれているのか正直よく分からないです。どういうのが「良いコード」なのかは状況によって(/大事に守りたい資源によって)異なります。

携帯上でということでしたら、守りたいものは実行ファイルサイズとか、CPU時間とか、メモリ空間とかではないかと思いますが……Morleyさんが守りたいのは何ですか?
#個人的な感覚では「String#lengthで文字数を取得して処理分岐」が一番良さそうな気がしないでもないです。処理も速そうですし、可読性も高そうですので……

[ メッセージ編集済み 編集者: 永井和彦 編集日時 2005-04-07 11:23 ]
taro
ぬし
会議室デビュー日: 2003/10/20
投稿数: 316
投稿日時: 2005-04-07 12:15
platform.substring(0,Math.min(10,platform.length()));
とか。携帯用で使えるかは知りません。
ロス
常連さん
会議室デビュー日: 2005/03/25
投稿数: 26
投稿日時: 2005-04-07 12:21
引用:

ロスさんの書き込み (2005-04-07 08:51) より:
org.apache.commons.lang.StringUtils クラスの left メソッドあたりが使えないでしょうか?



ソースを確認してみたところ、if文で指定された文字数(今回の場合は10)以下の場合はそのままのString、それより大きい場合はsubstringを利用していました^^;
(つまり、最初にMorleyさんが記述している内容と同じ意味のコーディングでした)

確認不足すいません。
でゅうく
大ベテラン
会議室デビュー日: 2003/11/30
投稿数: 129
投稿日時: 2005-04-07 16:43
引用:

ロスさんの書き込み (2005-04-07 12:21) より:
ソースを確認してみたところ、if文で指定された文字数(今回の場合は10)以下の場合はそのままのString、それより大きい場合はsubstringを利用していました^^;
(つまり、最初にMorleyさんが記述している内容と同じ意味のコーディングでした)

確認不足すいません。


携帯用で Commons 使うかどうかは別にして、StringUtil#left は今回の要件を満たしていますよ。
最初の Morley さんのコードとは別物だと思いますが・・。

[追記]
ロスさんの言っている意味が後でわかりました。
行っている手順として同じ意味ってことですね。

確認不足すいません。

[ メッセージ編集済み 編集者: でゅうく 編集日時 2005-04-07 16:51 ]
Keisuke
大ベテラン
会議室デビュー日: 2003/10/24
投稿数: 105
投稿日時: 2005-04-07 18:54
筋の悪いアドバイスが多数ついていますが(未記入さんを除き)
platform.length()で例外を避けるのが嫌なら、
IndexOutOfBoundsException をキャッチすれば良いだけの事です。

スキルアップ/キャリアアップ(JOB@IT)