人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

java アプリ の質問です。

nagasa = MOJI_DATA.length();



kirinuki = MOJI_DATA.substring( 0,10 );

などで、文字を切り抜く場合、半角も全角も一文字として扱われますが、これを
「半角は0.5、全角は1」というような感じで判断ができないでしょうか?

現在、どちらも同じ1文字で数えてしまい、区別をつけられないのでちょっと困っています。

●質問者: zachouR
●カテゴリ:コンピュータ インターネット
✍キーワード:Java アプリ 現在
○ 状態 :終了
└ 回答数 : 7/7件

▽最新の回答へ

1 ● salic
●18ポイント

Byteに変換してカウントするのは駄目ですか?

http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/Byte.h...


2 ● kunit_mac
●17ポイント

http://www.yahoo.co.jp/

double nagasa = MOJI_DATA.toCharArray().length / 2.0;

これでどうでしょうか。


3 ● ksaito11
●17ポイント

こちらの情報は参考になるでしょうか。

http://java-house.jp/ml/archive/j-h-b/031699.html


4 ● kunit_mac
●17ポイント

http://www.infoseek.co.jp/

すみません勘違いしてました。

double nagasa = MOJI_DATA.getBytes().length / 2.0;

こちらですね。


5 ● b-wind
●17ポイント

Java の String 型はすべての文字を UNICODE として扱いますので、全角半角での違いは一切ありません。


方法1

ご自分で対応表(この場合は半角のみ)を作成しそちらとのマッピングで計算していく。


方法2

http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/String...(java.lang.String)

String#getBytes(String charset) を使用することで、指定した charset でのバイト数が分かります。

charset には "Shift_JIS","EUC_JP" 等が入りますが、ここでもすべての半角が 1byte である保障はありません。


方法3

http://www-306.ibm.com/software/globalization/icu/index.jsp

http://blog.ozacc.com/archives/000480.html

IBM が ICU4J というライブラリを公開しています。こちらをうまく使えば判別は可能ではないでしょうか。


1-5件表示/7件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ