JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 1386578
  • Score
    100M100P100Q202713F
  • License MIT

Get the line and column number of a specific character in a string

Package Exports

  • locate-character

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (locate-character) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

locate-character

Get the line and column number of a particular character in a string.

Installation

npm install locate-character, or get it from npmcdn.com/locate-character.

Usage

To search for a particular character, using the index or a search string, use locate:

import { locate } from 'locate-character';

const sample = `
A flea and a fly in a flue
Were imprisoned, so what could they do?
Said the fly, "let us flee!"
"Let us fly!" said the flea.
So they flew through a flaw in the flue.
`.trim();

// Using a character index
const index = sample.indexOf( 'fly' );
locate( sample, index );
// -> { line: 0, column: 13, character: 13 }

// Using the string itself
locate( sample, 'fly' );
// -> { line: 0, column: 13, character: 13 }

// Using the string with a start index
locate( sample, 'fly', { startIndex: 14 });
// -> { line: 2, column: 9, character: 76 }

If you will be searching the same string repeatedly, it's much faster if you use getLocator:

import { getLocator } from 'locate-character';

const locate = getLocator( sample );

let location = locate( 13 );
// -> { line: 0, column: 13, character: 13 }

location = locate( 'fly', { startIndex: location.character + 1 });
// -> { line: 2, column: 9, character: 76 }

location = locate( 'fly', { startIndex: location.character + 1 });
// -> { line: 3, column: 8, character: 104 }

In some situations (for example, dealing with sourcemaps), you need one-based line numbers:

getLocator( sample, { offsetLine: 1 });
locate( sample, { offsetLine: 1 });

There's also an offsetColumn option which is less useful in real-world situations.

License

MIT