백 스페이스로 구분 된 플랫 파일을 본 사람이 있습니까? 내 요구 사항은 그러한 파일을 구문 분석하는 것이지만 백스 페이스 문자를 파일에 넣을 수 없어이를 감지 할 수 있는지 확인하지 못합니다.백 스페이스로 구분 된 플랫 파일
답변
분할은 다른 구분 기호를 사용하는 것보다 어렵지 않아야합니다. 그것은 결국 또 다른 캐릭터입니다. 파이썬에서, 예를 들면 :
>>> x = "apples\bbanana\bcoconut\bthese are delicious!"
>>> x.split('\b')
['apples', 'banana', 'coconut', 'these are delicious!']
대부분의 언어는 백 스페이스에 대한 이스케이프 문자로 \b
를 사용합니다. 귀하가 원하지 않는 경우 backspace 자체에 대한 ASCII 제어 코드도 포함 할 수 있습니다 (\ x08).
백 스페이스 문자는 어떻게됩니까? 나는 백 스페이스가 실제로 그것을 앞서는 문자를 삭제한다고 믿는다. 다음 문자열은 백 스페이스로 구분 된 문자열의 예입니다 : 사과/bbananas/bcoconut – Thunderhashy
Backspace는 제어 문자라고합니다. 인쇄 할 수있는 캐릭터가 아닙니다. 이것은 파일이 값을 구분하는 데 사용하는 단순한 마법 값입니다. 제어 문자에 대한 자세한 내용은 다음을 참조하십시오. http://en.wikipedia.org/wiki/Control_character –
나는 링크를 통과했습니다. "\ b"는 제어 문자이며 printable.But가 아닌 것 같습니다. 예를 들어 "apples \ bbananas \ bcoconut"에서 "\ b"를 볼 수 있으며 인쇄 할 수도 있습니다. – Thunderhashy
본 적이 없지만 일부 편집자는 예를 들어를 눌러 백 스페이스 문자를 넣을 수 있습니다. Ctrl-V를 먼저 누릅니다.
백 스페이스 (\0x008
)의 ASCII 문자 코드를 파일에 추가하는 스크립트를 작성할 수 있습니다.
그런 스크립트로 저를 도울 수 있습니까? – Thunderhashy
어떤 언어로 쓰시겠습니까? – SLaks
스크립팅 언어가 설치되어 있지 않습니다. 자바를 통해 할 수 있습니까? – Thunderhashy
다음은 테스트를 위해 백 스페이스로 구분 된 파일을 생성하는 C 프로그램입니다 (다른 행을 구분하는 줄 바꿈 포함). 파일 이름 중 하나를 전달, 또는 그것이 stdout에 기록합니다 (당신이 플랫폼을 언급하지 않았기 때문에 나는 C를 선택, 대부분의 사람들이 사용할 수있는 C 컴파일러가) :
#include <stdio.h>
int main(int argc, char **argv) {
FILE *outfile;
if (argc < 2)
outfile = stdout;
else
outfile = fopen(argv[1], "w");
fprintf(outfile, "this\bis\nbackspace\bdelimited\n");
fclose(outfile);
return 0;
}
자바에서 작동해야하는 same string literal syntax;
"this\bis\nbackspace\bdelimited\n"
감사합니다. 자바로 가능합니까? Java를 사용할 수 있습니다. – Thunderhashy
예, Java에서 가능합니다. 하지만 저는 지금 자바로 글을 쓰고 싶지 않습니다. 프로그램을 번역 할 수 있어야합니다. 동일한 문자열 리터럴 구문이 Java에서 작동해야합니다 :' "this \ bis \ nbackspace \ bdelimited \ n"' –
java를 통해 파일에 쓸 수있었습니다. 다음 스 니펫을 사용했습니다. FileOutputStream out = 새 FileOutputStream ("C : \\ myfile.txt"); PrintStream p = 새 PrintStream (출력); p.println ("This \ bis \ bwritten \ bto \ ba \ bfile"); Thisiswrittentoafile (여기에 입력 할 수없는 단어 사이에 상자 기호가 있음) cmd shell에서 myfile.txt를 입력하면 다음을 볼 수 있습니다. Thiiwrittetfile 각 단어의 마지막 문자가 삭제 된 것을 볼 수 있습니다. 놀라운 일입니까? 일부 데이터가 손실됩니까? – Thunderhashy
Windows를 사용하는 경우 Ctrl + Backspace를 사용하여 메모장에 백 스페이스를 삽입 할 수 있습니다.
감사합니다. 정말 도움이됩니다. – Thunderhashy
나는 이것을 시험해 보았다. 그러나 이것은 자바의 파일에 쓰고 백 스페이스에 "\ b"를 사용하는 것과는 다릅니다. 차이점은 Windows를 사용하여 이러한 파일을 열 때 cmd 쉘 유형 명령 출력은 다음과 같습니다.Thiiwrittetfile⌂jahs 여기서 j 앞에있는 문자는 Ctrl + Backspace를 사용하여 실제로 입력되고 "this"의 문자 s는 s 이후에 삭제됩니다. , 나는 자바 코드를 통해 \ b를 넣었다. – Thunderhashy
Ctrl + Backspace는 실제로 백 스페이스 문자를 생성하지 않습니다. \ b를 사용하여 그러한 문자를 구문 분석 할 수 없었습니다. – Thunderhashy
0xED (Mac의 경우)과 같은 16 진수 편집기를 가져 오는 것이 좋습니다. 비정상적인 문자가 포함 된 파일을보고 편집하는 데 매우 유용합니다. 이 파일을 사용하면 "08"을 입력하여 백 스페이스 문자를 파일에 삽입 할 수 있습니다.
어떤 언어로 작업하고 있습니까? – Gregory
sqlserver 및 java로 작업하고 있습니다. 내 요구 사항은 백 스페이스 구분 파일을 구문 분석하는 것입니다. 처음에는 bcp 유틸리티를 사용하여 구문 분석을 시도했지만 그렇게 할 수 없었습니다. 자 이제 자바를 통해 구문 분석하려고합니다. – Thunderhashy