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