メモのコツを教えてください!

改行コード"\n"を<BR>に変換したいです。

String strMessage = "1行目\n2行目\n3行目";
strMessage.replaceAll("\n","<BR>" );

と記述したのですが、上手く置換できませんでした。
どうも"\n"が認識されないようなのですが、どのように記述すればいいのでしょうか?

A 回答 (5件)

質問にあるプログラム片であるなら、



import java.lang.*;
public class Moge {
public static void main(String[] args) {
String strMessage = "1行目\n2行目\n3行目";
String strReplaced = strMessage.replaceAll("\n","<BR>" );

System.out.println("strMessage = " + strMessage);
System.out.println("strReplaced = " + strReplaced);
}
}

strMessage = 1行目
2行目
3行目
strReplaced = 1行目<BR>2行目<BR>3行目

と正しく動いていますけど?
なにか別の条件があったりしませんか?

この回答への補足

ご回答ありがとうございます。

String strReplaced = strMessage.replaceAll("\\n","<BR>" );
で解決しました。
何度もご回答くださり、ありがとうございました。

補足日時:2007/07/28 08:44
    • good
    • 0

replaceにて評価してみて下さい。

駄目ですか?

String strMessage = "1行目\n2行目\n3行目";
strMessage.replace("\n","<BR>" );

この回答への補足

ご回答ありがとうございました。

補足日時:2007/07/28 08:46
    • good
    • 0

No1のかたの回答を具体的にいうと



strMessage = strMessage.replaceAll("\n","<BR>" );

とすることで質問者さんの意図通りになると思います。

この回答への補足

ご回答ありがとうございます。

strMessage = strMessage.replaceAll("\n","<BR>" );
このような記述でも上手く置換されませんでした。
特殊記号は前方に\を書かなければいけないということを他のサイトで見ましたので下記のような記述にしましたが、それでも上手くいきませんでした。
strMessage = strMessage.replaceAll("\\n","<BR>" );

申し訳ありませんが、どうか教えてください。

補足日時:2007/07/27 01:06
    • good
    • 0

File.separator を使うのが普通ですが、


unix系:\n(LF:0x0a)
旧Mac系:\r(CR:0x0d)
Windows系:\r\n(CRLF:0x0d,0x0a)
となっているので、どのマシンで作成されても良いように構築するのなら、自力でコーディングが必要かもしれません。

この回答への補足

ご回答ありがとうございます。

File.separatorについて調べてみましたが、使い方がよくわかりませんでした。
strMessage = strMessage.replaceAll(File.separator,"<BR>" );
というような使い方でよいのでしょうか?
試してみましたが上手くいきませんでした。

補足日時:2007/07/27 01:04
    • good
    • 0

Java の String は immutableで、



public String replaceAll(String regex,
String replacement)

指定された正規表現に一致する、この文字列の各部分文字列に対し、指定された置換を実行します。

このフォームのメソッド呼び出し str.replaceAll(regex, repl) では、次の式と正確に同じ結果が得られます。

Pattern.compile(regex).matcher(str).replaceAll(repl)

パラメータ:
regex - この文字列との一致を判定する正規表現
戻り値:
結果として得られる String

ということですから、
replaceAllの返す文字列を受け取ってやらないと
いけないのでは?

> strMessage.replaceAll("\n","<BR>" );
こうしても strMessageを書き換えるわけではないですよ?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

私の例の記述が間違っておりました。
sakusaker7様の言われるように
strMessage = strMessage.replaceAll("\n","<BR>" );
としております。
しかし、上手く置換できません。

strMessage = strMessage.replaceAll("n","<BR>" );
このようにすれば置換されますのでダブルクォートで\を挟む記述が問題なのでしょうか?

お礼日時:2007/07/27 01:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報