Наименее используемый символ-разделитель в обычном тексте <ASCII 128 - PullRequest
64 голосов
/ 29 января 2009

По причинам, связанным с кодированием, которые вас ужаснут (я слишком смущен, чтобы говорить), мне нужно хранить несколько текстовых элементов в одной строке.

Я разделю их, используя символ.

Какой символ лучше всего использовать для этого, то есть какой символ наименее вероятно появится в тексте? Должно быть напечатано и, вероятно, меньше 128 в ASCII, чтобы избежать проблем с локалью.

Ответы [ 16 ]

2 голосов
/ 29 января 2009

Труба для победы! |

1 голос
/ 21 февраля 2017

Я не уверен, требуется ли вам использовать ASCII, но если вы можете закодировать его в UTF-8, вы можете найти действительно неясный символ, такой как: (U + 2561 ) - который я часто использую в своих программах.

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

1 голос
/ 20 августа 2013

И труба, и каретка - очевидный выбор. Я хотел бы отметить, что если ожидается, что пользователи будут печатать весь ответ, каретку легче найти на любой клавиатуре, чем pipe.

1 голос
/ 11 февраля 2009

Я не думаю, что когда-либо видел амперсанд, за которым следовала запятая в естественном тексте, но вы можете сначала проверить файл, чтобы увидеть, содержит ли он разделитель, и, если да, использовать альтернативу. Если вы хотите всегда знать, что используемый вами разделитель не вызовет конфликта, выполните цикл, проверяя файл на наличие требуемого разделителя, и, если он существует, удваивайте строку, пока у файла больше не будет совпадения. , Неважно, есть ли подобные строки, потому что ваша программа будет искать только точные совпадения разделителей.

1 голос
/ 29 января 2009

Ну, в некоторой степени это будет зависеть от характера вашего текста, но вертикальная черта 0x7C не часто встречается в тексте.

1 голос
/ 29 января 2009

Вам, вероятно, придется выбрать что-то и игнорировать его другое использование.

+ 

может быть хорошим кандидатом.

...