- - PR -
JDKの正規表現(java.util.regex)での改行の削除方法について
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-01-09 20:02
java.util.regex で html ファイルから改行を削除しようと、
\\\n や \u000A で改行文字を指定するのですが、なぜか Javaプログラムで改行が認識されません。 Javaで html ファイルの改行の削除方法を ご存知の方、お教え下さい。 どうしても、分からなくて、とても困ってます。 以下に、実行しているプログラムの関連部分を載せます。 =================================================================== public class RegExp0116 { /** 置換元文字列 */ private static String[] src = new String[33]; /** 置換文字列 */ private static String[] replace = new String[33]; <中略> public static void main(String[] args) throws IOException { File file = new File("C:\\HTMLfiles"); src = "\\\n"; replace= ""; <中略> private static void searchDir(File dir) throws IOException { File[] files = dir.listFiles(); for (int i = 0; i < files.length; i++) { File file = files[i]; if (file.isDirectory()) { searchDir(file); } else { String[] lines = getLines(file.getPath()); for (int j = 0; j < lines.length; j++) { Pattern pattern = Pattern.compile(src,Pattern.MULTILINE); Matcher matcher = pattern.matcher(lines[j]); lines[j] = matcher.replaceAll(replace); } } ======================================================================= | ||||||||
|
投稿日時: 2007-01-09 20:52
単にBufferedReaderでreadLineした文字列をつなげただけではだめなんですか?
ソースでgetLinesで取得する文字列がどのようなものかわかりませんが、 Windowsだとたぶん\rが入っていると思いますので、 \nだけの置換だとnotepadで見たとき黒い四角が残っていると思います。 src="¥¥r{1}¥¥n"とでもすればいいのかな? [ メッセージ編集済み 編集者: だっちょ 編集日時 2007-01-11 08:49 ] | ||||||||
|
投稿日時: 2007-01-10 10:47
提示のサンプルソースはいろいろ欠けているのでそのまま動作確認できないのですが、
ソースを見ていて気になる点がありました。 「正規表現の記述方法が分からない」のか、 「プログラムが動かないのは正規表現の表記に誤りがあると思いこんでいる」のか どちらなのでしょうか? 正規表現が誤っているかどうかを確認したければ、ミニマムなプログラムを書いて 確かめればわかることです。
注) @IT掲示板のバグの関係上、円マークは全角にしています getLines(file.getPath());の箇所で取得したString[]の中身を確認しましたか? getLines()はあなたが書いたメソッドだと思いますが、 BufferedReader.readLine()あたりで行ごとに読み込んでいるのではないでしょうか。 この時点で末尾に改行コードはついていますか? http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/io/BufferedReader.html#readLine()
あなた自身が本当にわからないことは何でしょうか? 自分の無知の知を再考してみてください。 # ちなみにPattern.compileはforループの外に置くとパフォーマンスがよいですよ |
1