Separator Character

Share

What is a Separator Character?

A separator character (often abbreviated "sep" in variable names) is a text character used to split a text into multiple pieces of text data.

Examples

A good example are filepaths. A filepath is a text code where filenames of folders and files are separated by forward slashes (/) on Linux and macOS, and by backward slashes ( \) on Windows. This is also called the path separator or directory separator.

If we have a filepath like C:\photos\vacation\2024\beach\001.jpg or /photos/vacation/2024/beach/001.jpg, and we split this into parts using the directory separator, we get the filenames photos, vacation, 2024, beach, and 001.jpg. The first four are folder names, the last one is a file's filename. On Windows, C: indicates the drive letter, not a filename, so we can ignore it.

Another example are CSV files. CSV stands for Comma-Separated Values. A CSV file encodes a table or spreadsheet as a plain text file. Columns are separated by commas (,) or tab characters. Rows are separated by the newline character. For example, a CSV file could look like this:

Operating system,Path separator
Windows,\
macOS,/
Linux,/

Another example are Fully-Qualified Domain Names. Each level in a FQDN is separated by a dot (.). For example, in www.virtualcuriosities.com, com is the top-level domain (TLD), virtualcuriosities is the second-level domain, and www is the subdomain.

In an IPv4 address, the dot separates each byte of the four-byte address, e.g. 127.0.0.1. Each decimal number can only go from 0 to 255. In IPv6, there are more bytes per address, and a colon character (:) is used to separate four hexadecimal digits that together represent 16 bits, e.g. ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff.

Solo Separators

A separator doesn't need to appear multiple times in a piece of text. Sometimes, a separator merely separates the left side from the right side.

For example, in localhost:8080, the colon (:) separates the hostname (localhost) from the port (8080).

In key-value assignments, the equal sign (=) or colon (:) may separate the variable name from its value. For example, in Bash:

MY_ENV_VAR=123

In JSON:

{
    "foo": 1,
    "bar": 2,
}

Counter-Examples

A character is only a separator if it separates the same type of data, or separates members of an ordered tuple where each position has different purpose.

A character that groups a piece of data, e.g. quotes (", '), parentheses ((, )), brackets ([, ]), and braces ({, }), is called a delimiter instead.

Some characters may have special purpose and not be delimiters or separators, but simply parsed as part of some more complex syntax. For example, a simple math expression like 1 + 2 * 4 doesn't contain separators. More technically, with a separator we can simply look for a single separating character in a text to split it. But with a math expression, we need to look at each character, one by one, to see if it represents a mathematical operation like addition (+), subtraction (-), multiplication (*), or division (/).

Usage in Programming

Most programming languages have standard functions to split text strings by a separator in lists of data and to join those lists back using a separator.

For example, in Python we can use list.split(sep) and string.join(list):

as_string = 'foo,bar,fish,fries'
as_list = ['foo', 'bar', 'fish', 'fries']
assert as_string.split(',') == as_list
assert ','.join(as_list) == as_string

In Javascript:

const as_string = 'foo,bar,fish,fries';
const as_array = ['foo', 'bar', 'fish', 'fries'];
console.assert(same_array(as_string.split(','), as_array));
console.assert(as_array.join(',') == as_string);

function same_array(a, b) {
    if(a.length !== b.length) {
        return false;
    }

    for(let i = 0; i < a.length; i++) {
        if(a[i] !== b[i]) {
            return false;
        }
    }

    return true;
}

As you can see above, even though Javascript doesn't come with a built-in function to check for array equality like Python does so we need to write our own, it does come with functions to split and join strings.

Comments

Leave a Reply

Leave your thoughts! Required fields are marked *