- PR -

@が自動付加されエスケープシーケンスが認識されない

1
投稿者投稿内容
やんたん
ベテラン
会議室デビュー日: 2003/08/18
投稿数: 63
投稿日時: 2003-09-03 22:15
お世話になっております。

XMLからエスケープシーケンス(\n)付きの文字列を取得し
改行して表示させたいと思っております。
ところが、XMLからデータを取得した時点で取得文字列に
エスケープシーケンスがあると自動的に@が付加され
エスケープシーケンスを文字列として認識してしまっています。

substringなどで文字列を別オブジェクトに保持したりしてみたのですが
やはりエスケープシーケンスがあると自動的に@が付加されてしまいます
(ですから、XML固有の問題ではないと思います)

このような場合、エスケープシーケンスをエスケープシーケンスとして
認識されるにはどうすればよろしいでしょうか。

よろしくお願いします。


あすかぜ
常連さん
会議室デビュー日: 2003/04/22
投稿数: 21
投稿日時: 2003-09-03 23:05
@が付加されるというのはデバッグ表示が @"..." になるということだと解釈します。
「\」はXMLではエスケープシーケンスじゃないですから、改行にはなりませんね。
普通にXML内に改行を書けば改行になると思いますが、
「\n」を改行に変換したいなら str.Replace("\\n", "\n"); とかで。
やんたん
ベテラン
会議室デビュー日: 2003/08/18
投稿数: 63
投稿日時: 2003-09-03 23:17
お返事ありがとうございます。

説明不足でもうしわけありません。
XMLから取得した文字列をConsole.WriteLineで表示させているのですが
Console.WriteLine(str);
としたときにstrの中身が @"abc\ndef" となっております。
abcの後に改行されるのを期待しているのですがそのまま"abc\ndef"と
表示されてしまいます。

一応あすかぜさんのおっしゃるとおりReplaceもしてみましたが
やはり結果は"abc\\ndef"と表示されるだけでした。

もしこの解決方法をご存知でしたら教えていただけたら助かります。
よろしくお願いします。
_________________
あすかぜ
常連さん
会議室デビュー日: 2003/04/22
投稿数: 21
投稿日時: 2003-09-03 23:28
「\\」と\が2つ表示されました??
確認ですが、Replaceは戻り値を使ってますよね?

class Class1 {
[STAThread]
static void Main(string[] args) {
string str = @"aaa\nbbb";
str = str.Replace("\\n", "\n");
Console.WriteLine(str);
}
}
やんたん
ベテラン
会議室デビュー日: 2003/08/18
投稿数: 63
投稿日時: 2003-09-03 23:35
ありがとうございます。動作しました。
@付き文字列は、\があればその前に内部で自動的に\を付けているだけなんですね。
だからその置換でうまくいくんですね。

助かりました。ありがとうございます!
1

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