- - PR -
正規表現 バイトで扱いたい
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-08-17 03:41
下記のような正規表現を使って、
ファイルからBufferedReaderのreadLine()メソッドを使って 読み込んだ内容を解析しています。 ファイルの内容は、全角文字と半角文字が混在するもので、 解析はバイトデータとしておこないたいのですが、うまくいかず悩んでいます。 (バイトデータとしてString型にいれるなどすれば、いいのかと思うのですが・・) どなたかご存知のかた、ご教授願います Pattern pattern = Pattern.compile("^(.{8})(.{8})(.{30})(.{17})$"); よろしくお願いいたします。 | ||||
|
投稿日時: 2004-08-17 09:54
(バイトデータとしてString型にいれるなどすれば、いいのかと思うのですが・・)
そのように、バイトのストリームで読んで、バイトで切り出し後、それぞれ バイト→String ではダメなのですか? | ||||
|
投稿日時: 2004-08-17 10:37
InputStreamReaderを使って、ISO-8859-1のエンコード指定で読み込んでください。
正規表現にマッチさせて、グループを取り出すときは String string = new String(matcher.group(i + 1).getBytes("ISO-8859-1"),"MS932"); のように、逆変換をかけてください。(MS932はWindowsの場合) # もっとも正規表現でなく、String#substringで十分だけど | ||||
|
投稿日時: 2004-08-17 10:46
もし、こういう固定長のフィールドを切り出してくるようなパターンだけなら、正規表現を使わないってのが最も簡単な解決策だと思いますよ。 | ||||
|
投稿日時: 2004-08-17 10:49
ご回答ありがうございます。 1行毎読み込み処理したいので、読み込んだString型をバイトで切り出してString型にしたいんですが、 方法がわからず困っています。 大変申し訳ないのですが、コードで教えていただけますか? よろしくお願いいたします。 | ||||
|
投稿日時: 2004-08-17 11:00
String クラスの API はご覧になりましたか?
見ればどのメソッドを使うか書いてありますよ。 もし見もせずに「コードで教えろ」と書かれているのであれば回答される方にとって大変に失礼なことですので、改められるようお願いいたします。 | ||||
|
投稿日時: 2004-08-17 11:17
ありがとうございました。 解決できました。助かりました。 >>GIOさま 私は「コードで教えろ」という荒っぽい言い方はしていません。 きちんと調べてわからない場合は、「教えてください」以外の言い方を教えてください。(なんといってもそういう風にとらえられてしまうものなんですかね・・) | ||||
|
投稿日時: 2004-08-17 16:03
解決おめでとうございます。
以下枝葉かもしれませんが。 言葉遣いを荒っぽく書いてしまったことにはお詫びいたします。 きちんと調べてもわからない場合ですが、調べた範囲や項目、手段を書かれるとよろしいかと思います。 例えば、「Google で『Java バイト 正規表現』で調べましたが Jakarta ORO がマルチバイト対応である等の結果で、目的のヒントとなる情報は得られませんでした」などですね。 そうすれば、より有用なキーワードや、それ以外の情報ソースを知っている方から有効な回答が得られるやもしれません。 他のサイトなどではまったく調べた様子のない方や、「調べた」とだけ主張していて何をどのように調べたのかがさっぱりわからず対応に困る方もいらっしゃいますが、その轍は踏まないようお願いいたします。 | ||||
