2011-02-09 4 views
1

私のXMLファイルには、このスクリーンショットに示すようなユニコードの改行があります。 スクリーンショットにユニコードの改行をBRに置き換える

bigger screenshot

2つのドットの後に表示するには、このリンクを使用して、「心を。」改行です。私はグーグルで検索して、私が知っているほとんど全てをルビー(1.8)で置き換えることを試みましたが、運が全くありませんでした。

私のコードは(ユニコードの試行が異なる)、多分誰かが私を助けることができます。

def formatedBody 
    t = self.body.gsub("\u000a","<br/>") 
    t = t.gsub("\u000d","<br/>") 
    t = t.gsub("\u0009","<br/>") 
    t = t.gsub("\u000c","<br/>") 
    t = t.gsub("\u0085","<br/>") 
    t = t.gsub("\u2028","<br/>") 
    t = t.gsub("\u2029","<br/>") 
    t = t.gsub(/0A\0A/u,"<br/>") 
    return t 
end 
+1

は/ 'も試してみてください\ r?\ n /、 "
"。 – Nakilon

答えて

4

2つの0x0Aの値は改行の16進表現です。通常のol 'ASCII改行コード、AKA "\n\n"を文字列で指定します。

だから、t = t.gsub(/\n/, "<br/>")はうまくいくはずです。

t = "foo\u000d\u0009\u000c\u0085\u2028\u2029\nbar" 
p t 

t = t.gsub(/\u000d|\u0009|\u000c|\u0085|\u2028|\u2029|\n/,"<br/>") 
puts t 

あなたはとORで結合した文字のリストを置き換えることができます。

"foo\r\t\f\u2028\u2029\nbar" 
foo<br/><br/><br/><br/><br/><br/><br/>bar 

あなた

t = t.gsub(/0A\0A/u,"<br/>") 
理由を:

t = t.gsub(/[\u000d\u0009\u000c\u0085\u2028\u2029\n]/,"<br/>") 

いずれかの方法を、出力は次のようになります。

は動作しません正規表現はありません正しい。

t = t.gsub(/\x0A/,"<br/>") 

定義する別の方法です:

t = t.gsub(/\n/,"<br/>") 
+0

thanx男!あなたは私の髪を救った;)ORのsolutiuonは魅力のように動作します! – ghostrifle

+0

@hostrifle喜んで助けました。戻って答えとして選択することを忘れないでください。 –

0

私は(ルビー1.8.7を使用して)同じ問題を持っていたし、私は単純にそれを解決:

t = t.gsub(/\xE2\x80(?:\xA8|\xA9)/, '<br/>') 
関連する問題