2011-02-09 4 views
1

내 XML 파일에는이 스크린 샷과 같은 유니 코드 줄 바꿈이 있습니다. 스크린 샷을유니 코드 줄 바꿈을 BR로 바꾸기

bigger screenshot

두 점 후 보려면이 링크를 사용하여 "마음을." 줄 바꿈입니다. 내가 봤 거든 루비 (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

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

가 정의하는 또 다른 방법입니다 \ r? \ n /, "
". – Nakilon

답변

4

0x0A 값은 라인 피드의 진수 표현이다. 정규 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 

당신이 논리합 문자의 목록을 대체 할 수

"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(/\n/,"<br/>") 
+0

고맙습니다. 당신은 내 머리를 저장;) OR의 solutiuon는 매력처럼 작동합니다! – ghostrifle

+0

@hostrifle 도움이 된 것을 기쁘게 생각합니다. 돌아와서 이것을 대답으로 선택하십시오. –

0

저도 같은 문제 (루비 1.8.7를 사용)와 나는 단순히 그것을 해결했다 : /`도 시도

t = t.gsub(/\xE2\x80(?:\xA8|\xA9)/, '<br/>') 
관련 문제