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.

Written by Noel Santos.

About the Author

I'm a self-taught Brazilian programmer graduated in IT from a FATEC. In a world of increasingly complex and essential computers, I decided to use my technical expertise in hardware, desktop applications, and web technologies to create an informative resource to make PC's easier to understand.

View Comments