I sometimes need to parse a collection of filenames that act delimited information. Or I'm typing up a list in notepad, and want it to be parsable. Commas just aren't a great choice unless you're quoting all values.
I also like it to be typeable from the keyboard if possible. Windows can't do pipes (|
), so pipes are out if filename compatibility is needed. Additionally, it would be ideal if it was "web safe". This rules out @
, =
and #
which had some potential (though do show up in text as @name and #tag) as well as $
, which also had some viability. Semicolons might seem like a good choice, but are far too common (smilies, and people use it in filenames instead of a colon). %
had potential, but is used to URL encode characters like %20
etc.
Backtick is probably the best choice. I almost never see it, and when I do, it is used as an apostrophe, and can be replaced beforehand. But it also is an important character in Markdown, so a backtick-separated list will not play nice. I also like that I don't have to hold shift to type it as well (at least on a US keyboard).
Tilde is a respectable second choice. It's also almost never used, but does see use in certain kinds of "internet speak", so if you're delimiting body text from potential user data, you may want to escape it somehow.
Caret is worth considering as well, though it can sometimes be used in 'internet speak', especially in Asian countries, i.e. ^_^
.
Exclamation can definitely show up in grammatical text, but is worth a mention.
If two-character delimiters (or three) can be used, more possibilities are opened.
Using brackets become viable. For example ][
, }{
, )(
. Or you can duplicate the above ones, or mix and match, such as ~^
or ^~
.
With three-character delimiters, I like one character between two spaces. For example, Artist - Song title
can be reliably split using -
. But using other characters like the backtick can also work. Only concern might be typos, such as A ` B `C ` D
.
So yeah many viable choices, none of them really 'standard', unless you store the delimiter explicitly in a header.