• ベストアンサー

substring バイト単位でやりたい

Java初心者でちょっと困ったことがありまして・・・ 文字列をバイト単位で切り取りたいのですが やり方がわかりません。 substringを使ってやろうとすると、 純粋に文字の単位で切り取ってしまいます。 bbb = "あいう" #bbb.substring(1,2)# →"い" bbb = "abc" #bbb.substring(1,2)# → "b" バイト単位で文字列の切り出しを行いたい場合 どのような方法で実現すればよいのか知恵をおかりしたいのですが よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • sasadora
  • ベストアンサー率68% (59/86)
回答No.2

char単位でなく、byte単位で切り出したいのでしたら、 byte配列に変換してからやればOKです。 String a = "あいう"; String b = "abcdef"; //aの2バイト目から4バイト→"いう" System.out.println(new String(a.getBytes(), 2, 4)); //bの2バイト目から4バイト→"cdef" System.out.println(new String(b.getBytes(), 2, 4)); ただし、注意点があります。 String-byte配列の変換には、どの文字エンコーディングで を使用するか指定する必要があります。 「EUC_JPのbyte配列に」とか「Shift_JISのbyte配列に」とかで意味が変わるからです。 上記の例のように文字エンコーディングを指定しない場合は、 システムのデフォルトの文字エンコーディングが使用されます。 システムのデフォルトを使用すると、実行環境によって結果が変わってきます。 同じ半角カタカナの"ア"でも、実行環境によって 1バイトだったり2バイトだったり3バイトだったりするので要注意です。 文字エンコーディングの指定の仕方は、こんな感じです。 a.getBytes("Shift_JIS") //StringをShift_JISのbyte配列に new String(bytes, "Shift_JIS") //Shift_JISのbyte配列をStringに 詳しくはAPIリファレンスを見てください。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • mld_sakura
  • ベストアンサー率20% (264/1282)
回答No.1

文字コードを何にするかにもよりますが・・・。 String s = "文字"; int moji; int ans; moji = (int)s.charAt(2); ans = Integer.toHexString(moji); この例ですと、「文字」の2文字目「字」が「5b57」に変換されます。 見当違いでしたらごめんなさい。

すると、全ての回答が全文表示されます。

関連するQ&A