- PR -

String文字列のバイト単位の切り出し

1
投稿者投稿内容
未記入じゃけんど
ベテラン
会議室デビュー日: 2004/11/09
投稿数: 65
お住まい・勤務地: Osaka City
投稿日時: 2005-02-23 15:37
いつも参考にさせていただいております。

今、Stringをバイト単位で取得したいのですが、
substringでは文字単位で抽出されてしまい、うまくいきません。

一旦バイナリ方に変換してから、切り出し、再度文字列に戻すといった
操作をすると可能ですが、、、、
何か良い方法をお知りの方、どうかよろしくお願いいたします。

taro
ぬし
会議室デビュー日: 2003/10/20
投稿数: 316
投稿日時: 2005-02-23 16:03
charAt(n)で一文字ずつ切り出してカウントし、部分文字列を返すメソッドを作成して使用してます。
ご参考になれば幸いです。
らざるす
会議室デビュー日: 2002/11/15
投稿数: 11
投稿日時: 2005-02-23 16:06
String.getBytes() では、だめですか?
それと、バイト単位で取得した後に何をするかを書いたほうが
有効な回答が頂けると思いますけど。。
未記入
ぬし
会議室デビュー日: 2004/09/17
投稿数: 667
投稿日時: 2005-02-23 17:11
引用:

charAt(n)で一文字ずつ切り出してカウントし、部分文字列を返すメソッドを作成して使用してます。


それって何か意味あるんですか?

String をバイト列にして、バイト列の長さで切り出して、また String に戻す。どんなときにこういう処理するかな。たとえば、ShiftJIS 換算で、10バイト相当の文字列を作りたいときは、こんな処理が必要になりますね。

素直に、一度バイト列にして、切り出した後に再度 String を構築してくださいな。
taro
ぬし
会議室デビュー日: 2003/10/20
投稿数: 316
投稿日時: 2005-02-23 17:39
引用:

未記入さんの書き込み (2005-02-23 17:11) より:
引用:

charAt(n)で一文字ずつ切り出してカウントし、部分文字列を返すメソッドを作成して使用してます。


それって何か意味あるんですか?


マルチバイトで文字の区切りを気にしないで良いことですかね。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2005-02-23 17:53
引用:

未記入さんの書き込み (2005-02-23 17:11) より:
String をバイト列にして、バイト列の長さで切り出して、また String に戻す。どんなときにこういう処理するかな。たとえば、ShiftJIS 換算で、10バイト相当の文字列を作りたいときは、こんな処理が必要になりますね。


よくあるのは、データベースのカラムサイズに合わせたいときですね。
データベースの文字コードベースでサイズのチェックとか切捨てをやるときにはこういう
ユーティリティメソッドを作ります。サイズチェックだけならgetBytesだけで事足りますが、
切捨ての場合はcharに分解した方が実装しやすいですね。
未記入じゃけんど
ベテラン
会議室デビュー日: 2004/11/09
投稿数: 65
お住まい・勤務地: Osaka City
投稿日時: 2005-02-23 18:09
言葉足らずですいません。

全角半角が入り混じったString文字列(固定長)データを
それぞれの項目に格納していくClassを作成しています。

例えば、1バイト目から4バイト目がID,5バイト目から25バイト目までが氏名
といった具合のデータです。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2005-02-23 18:23
元々の文字列はどのような状態になっているんでしょうか。
Javaにおける文字列はユニコードなので、バイト長を意識する必要はないです。もしそれで
意識する必要があるとすれば、Stringに格納する時点で問題があるのではないですか?
1

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