2009-12-31 2 views
1

Имеет ли какой-либо вид плоского файла с обратным пространством? Мое требование состоит в анализе такого файла, но я не могу поместить символ обратного пробела в файл, чтобы проверить, могу ли я его обнаружить.Обратные пространства с плоскими файлами

+0

На каком языке вы работаете? – Gregory

+0

Я работаю с sqlserver и java. Мое требование состоит в том, чтобы анализировать файлы с ограниченным пространством. Сначала я попытался разобрать его с помощью утилиты bcp, но не смог этого сделать. Итак, теперь я пытаюсь разобрать его через java – Thunderhashy

ответ

1

Разделение не должно быть труднее, чем с использованием любого другого разделителя. В конце концов, это просто еще один персонаж. В Python, например:

>>> x = "apples\bbanana\bcoconut\bthese are delicious!" 
>>> x.split('\b') 
['apples', 'banana', 'coconut', 'these are delicious!'] 

Большинство языков используют \b как экранирующий символ для забоя. Если у вас нет, вы также можете включить код управления ASCII для самого backspace, который является \ x08.

+0

Как обратный символ? Я бы поверил, что backspace фактически удаляет символ, предшествующий ему. Является следующей строкой пример строки с ограниченным пространством: Яблоки/bbananas/bcoconut – Thunderhashy

+1

Backspace - это то, что называется управляющим символом. Вы правы в том, что это не печатный персонаж; это просто волшебное значение, которое ваш файл использует для разграничения значений. Подробнее о контрольных символах здесь: http://en.wikipedia.org/wiki/Control_character –

+0

Я прошел через ссылку. Кажется, что «\ b» является управляющим символом и не печатается. Но в вашем примере «apples \ bbananas \ bcoconut» я могу видеть «\ b», и я могу его распечатать. – Thunderhashy

1

Я никогда не видел его, но некоторые редакторы позволяют помещать символ обратного пробела, нажав, например. Сначала Ctrl-V.

1

Вы можете написать скрипт, который добавляет код символа ASCII для backspace (\0x008) в файл.

+0

Можете ли вы мне помочь с таким скриптом? – Thunderhashy

+0

На каком языке вы хотите его написать? – SLaks

+0

У меня нет языка скриптинга. Могу ли я сделать это через java? – Thunderhashy

1

Вот программа на C, которая сгенерирует вам файл с разделителем обратного пробела для тестирования (с новыми строками, разделяющими разные строки). Передайте либо имя файла, либо он будет записывать его на стандартный вывод (я выбрал 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 должен работать в Java; Я дам вам написать остальную часть программы:

"this\bis\nbackspace\bdelimited\n" 
+0

Спасибо. Возможно ли это на Java? Я использую java – Thunderhashy

+0

Да, это возможно на Java. Но я действительно не хочу писать на Java прямо сейчас, и вы должны иметь возможность перевести программу. Такой же строковый литерал должен работать в Java: '' this \ bis \ nbackspace \ bdelimited \ n "' –

+0

Мне удалось написать файл через java. Я использовал следующий фрагмент: FileOutputStream out out = new FileOutputStream ("C: \\ myfile.txt"); PrintStream p = новый PrintStream (out); p.println ("This \ bis \ bwritten \ bto \ ba \ bfile"); Теперь, когда я открываю файл в блокноте я могу видеть: Thisiswrittentoafile (Существует символ коробки между словами, которые здесь я не могу печатать) Но если я типа myfile.txt из CMD оболочки можно увидеть: Thiiwrittetfile Как мы видим, последняя буква каждого слова была удалена. Неужели это удивительно? некоторые данные теряются? – Thunderhashy

1

При использовании Windows, вы можете вставить забой в блокнот с помощью Ctrl + Backspace.

+0

Спасибо, что это действительно полезно. – Thunderhashy

+0

Я пробовал это. Но это выглядит иначе, чем запись в файл в java и использование «\ b» для backspace. Разница в том, что когда я открываю такой файл, используя команду командной строки командной строки cmd, появляется как Thiiwrittetfile⌂jahs , где символ до j фактически вводится с помощью Ctrl + Backspace, а буква s в «this» удаляется, поскольку после s , Я поместил a \ b через java-код. – Thunderhashy

+0

Ctrl + Backspace фактически не создает обратный символ. Я не смог разобрать такой символ, используя \ b – Thunderhashy

1

Я также рекомендовал бы получить шестнадцатеричный редактор, такой как 0xED (для Mac). Это очень полезно для просмотра и редактирования файлов, содержащих необычные символы. С его помощью вы можете просто ввести «08», чтобы вставить символ обратного пространства в файл.

Смежные вопросы