2012-06-10 3 views
0

피드 동안이 문자열이루비 정규식 절반 슬래시 라인을 보존하는 나는 다음과 같은 문자열이

coolStr = '<!-- \\n @author  Phil R\\n @date   6.5.2012\\n @description Me T\\\\nesting S\\\\\\\\ntuff\\n-->' 

가 이중으로 탈출 한 것으로 나타납니다. 나는에 문자열을 설정하고 싶습니다 :

newCoolStr = "<!-- \n @author  Phil R\n @date   6.5.2012\n @description Me T\\nesting S\\\\ntuff\n-->" 

은 당신이 쓴 경우 그 그래서 :

puts newCoolStr 

당신은 얻을 것이다 : 나는이 작업을 수행하는 데 실패했습니다

<!-- 
    @author  Phil R 
    @date   6.5.2012 
    @description Me T\nesting S\\ntuff 
--> 

.

coolStr.gsub(/\\\\/) {'\\'} 

하지만이 곳이 시나리오에서 결국 다음 "\\ n을"의 인스턴스를 캐치하지 않았던 나는 이것을 이해하지 못하는 이유와 : 내가 얻을 수있는 가장 가까운 절반 백 슬래시 수있게되고 줄 바꿈과 "\\\\ n"으로 원래 표시된 것과는 구별되지 않습니다. 예 :

<!-- \\n @author  Phil R\\n @date   6.5.2012\\n @description Me T\\nesting S\\\\ntuff\\n--> 

꽤 간단한 문제처럼 보이지만 그걸 얻을 수없는 것 같습니다. 이것을 달성하는 가장 좋은 방법은 무엇입니까? I가 GreyCat의 솔루션을 가로 질러왔다

+0

가능한 중복 [사용 방법 언 이스케이프 루비에서 C 스타일 이스케이프 시퀀스?] (http://stackoverflow.com/questions/4265928/how-do-i-unescape-c-style-escape- 루비로부터의 시퀀스) –

답변

1

문자열의 개행 문자가 루비에 따른 개행 문자가 아니라는 것이 하나의 문제입니다. n 문자 옆에있는 이스케이프 처리 된 백 슬래시입니다.

당신

gsub(/\\+n/,"\n") 

수 그러나 당신은 당신이 탈출하지 않으려는 설명에 물건에서 원하는 줄 바꿈을 구별하는 방법이 필요 것입니다. 앱과 더 관련이 있습니다.

이 경우, 더러워지며 개행 문자 뒤에 단어 문자가 오면 텍스트로 처리 할 수 ​​있습니다.

str = "coolStr = '<!-- \\n @author  Phil R\\n @date   6.5.2012\\n @description Me T\\\\nesting S\\\\\\\\ntuff\\n-->'" 

puts str.gsub(/\\+n(?!\w)/,"\n") 

coolStr = '<!-- 
@author  Phil R 
@date   6.5.2012 
@description Me T\\nesting S\\\\ntuff 
-->' 
관련 문제