Split with multiple delimiters (with unit tests)
by Lloyd Atkinson
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.8.0/jasmine.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.8.0/jasmine-html.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.8.0/boot.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.8.0/jasmine.min.css">
JavaScript
describe('Extract IDs from string', () => {
describe('Comma-separated values', () => {
it('Plain comma-separated values', () => {
expect(extractIds('abc,abcd,abcde')).toEqual(['abc', 'abcd', 'abcde']);
});
it('Comma-separated values with whitespace', () => {
expect(extractIds('abc, abcd, abcde')).toEqual(['abc', 'abcd', 'abcde']);
});
it('Comma-separated values with superfluous commas', () => {
expect(extractIds(',,,abc, abcd,,, abcde,,,')).toEqual(['abc', 'abcd', 'abcde']);
});
it('Comma-separated values with empty cells', () => {
expect(extractIds('abc, abcd, , abcde,')).toEqual(['abc', 'abcd', 'abcde']);
});
});
describe('Excel/Tab-separated values', () => {
it('Plain tab-separated values', () => {
expect(extractIds('abc abcd abcde')).toEqual(['abc', 'abcd', 'abcde']);
});
it('Tab-separated values with whitespace', () => {
expect(extractIds('abc, abcd, abcde')).toEqual(['abc', 'abcd', 'abcde']);
});
it('Comma-separated values with superfluous tabs', () => {
expect(extractIds(' abc abcd abcde ')).toEqual(['abc', 'abcd', 'abcde']);
});
it('Comma-separated values with empty tabs', () => {
expect(extractIds(' abc abcd abcde ')).toEqual(['abc', 'abcd', 'abcde']);
});
});
describe('Extra delimiting characters', () => {
it('Semicolons', () => {
expect(extractIds('abc;abcd;abcde')).toEqual(['abc', 'abcd', 'abcde']);
});
it('Colons', () => {
expect(extractIds('abc;abcd;abcde')).toEqual(['abc', 'abcd', 'abcde']);
});
it('Hyphens', () => {
expect(extractIds('abc;abcd;abcde')).toEqual(['abc', 'abcd', 'abcde']);
});
it('Dots', () => {
expect(extractIds('abc;abcd;abcde')).toEqual(['abc', 'abcd', 'abcde']);
});
...