2011-11-15 4 views
1

표준 텍스트 파일의 텍스트를 구문 분석하는 Cocoa 앱이 있습니다. 파일을 편집하기 위해 nano와 pico와 같은 터미널 프로그램을 사용할 때 문자가 ^M 인 경우가 있습니다. 이후 버전의 Mac OS X에서는이를 재현 할 수 없지만 버전 10.5에서는 많이 사용 된 것으로 보입니다.^M 문자를 구문 분석하십시오.

이상하게도 10.5 시스템에서 ^M 문자가있는 파일을 가져 가면 10.6+ 이상이됩니다. 맥 OS가 리눅스 스타일의 라인 피드를 맥 스타일 (?)로 변환하기 시작했기 때문에 이것이라고 생각한다. 결과적으로 XCode가 10.7에만 설치되었으므로 디버그 시간에 문제를 해결하는 것이 다소 복잡해졌습니다.

^M 문자를 찾고 대신 파일을 구문 분석하는 동안 좀 더 표준 (예 : \n)으로 바꿔야합니다. 어떤 유형의 캐릭터를 찾아야합니까? 그것은 \ n 같이 보이지 않습니다. 마찬가지로, \ r \ n의 조합도 그 트릭을 수행하지 않습니다. ^M이 계속 응답합니다.

답변

0

^M은 DOS/Windows에서 표준 캐리지 리턴 문자입니다.

나는 dos2unix 프로그램을 사용하여 모두 제거합니다.

+0

코드를 통해 수행 할 방법이 없습니까? – bugfixr

+1

아 물론. 나는 당신이 단지 "\ r"을 ""로 대체 할 필요가 있다고 생각한다; 그냥 "\ r"을 제거하십시오 – JohnnyK

1

이것은 XCode에서 쉽게 관리 할 수 ​​있습니다.

라인 엔딩을 변경하려는 파일을 선택한 다음 유틸리티 패널을 열면 라인 엔딩을 변경할 수 있습니다. 그래서 같이

:

enter image description here

+1

런타임에이 작업을 수행해야합니다. 이 앱을 실행하는 일부 사람들은 nano를 사용하여 파일을 편집 한 다음 Dos 스타일 라인 피드로 끝냅니다. 나는 그들에게 내게 파일을 메일로 보내달라고 부탁 할 수는 없다 ...;) objective-c를 사용하여 이것을 수행 할 수있는 방법이 있는가? – bugfixr

1

나는 일반적으로 맥 OS 사용자, 아니에요, 그래서 난 단지이 작동 같은데요. 일반적인 유닉스 계열 시스템에서는 Ctrl-V를 사용하여 보이는 문자 시퀀스로 표시하기 위해 입력 한 다음 제어 문자를 얻을 수 있습니다. 예를 들어 Ctrl-V를 입력 한 다음 Return 키를 눌러^M을 표시 할 수 있습니다. 이 경우 화면에 나타나는^M은^문자와 M 문자를 처음 입력 할 때 나타나는^M과 같지 않습니다 (소프트웨어의 관점에서 볼 때). 이런 식으로 정규식을 사용하여^M 제어 문자 표현을 대신 \ n 인스턴스로 바꾸는 등의 작업을 할 수 있습니다.

Jakrabbit이 제안한 것처럼 dos2unix를 사용하여 파일을 필터링 할 수도 있습니다 (Mac에서 사용 가능하다고 가정).

1

"^ M"은 ASCII 줄 바꿈 문자를 나타냅니다. 이것은 ASCII (및 UTF-8)로 된 문자 코드 13이므로 파일을 구문 분석 할 때 값이 13 인 문자를 찾아 무시합니다.

관련 문제