1.1.0 β€’ Published 4 years ago

es-string-algorithm v1.1.0

Weekly downloads
3
License
BSL-1.0
Repository
github
Last release
4 years ago

es-string-algorithm

CircleCI Greenkeeper badge

NPM

Introduction

C++ STL provide find_first_of / find_first_not_of / find_last_of / find_last_not_of / find / rfind member function.

However, JavaScript String class does not provide such method. So, this package provide these functions.

Reference

Every function manipulate a string as if that is UTF-32 encoded.

To describe simply, we use two function like below:

  • at(s: string, n: number) => string: Returns nth charactor.

findFirstOf

export declare const findFirstOf: (target: string, key: string, pos?: number, n?: number | undefined) => number;

Determines the lowest position xpos, if possible, such that both of the following conditions hold:

  1. pos <= xpos and xpos < std.size(target)
  2. k.includes(at(target, xpos)) (When n is undefined (omitted), k is equal to key. Otherwise, k is equal to std.substr(key, 0, n))

Parameters

  • target: search target string
  • key: string identifying characters to search for
  • pos = 0: position at which to begin searching
  • n(opt): length of character string identifying characters to search for

Return value

xpos if the function can determine such a value for xpos. Otherwise, returns -1.

Example

const std = require('es-string-algorithm');
const s = 'Hello, world. Welcome to C++ world.';
const str = 'world';
console.log(std.findFirstOf(s, str, 14));// => 16
console.log(std.findFirstOf(s, ',.+', 14));// => 26
console.log(std.findFirstOf('arikitari na sekai', 'a', 1));// => 6
console.log(std.findFirstOf('🍣🍺', '🍺'));// => 1

findLastof

export declare const findLastof: (target: string, key: string, pos?: number, n?: number | undefined) => number;

Determines the highest position xpos, if possible, such that both of the following conditions hold:

  1. pos <= xpos and xpos < std.size(target)
  2. k.includes(at(target, xpos)) (When n is undefined (omitted), k is equal to key. Otherwise, k is equal to std.substr(key, 0, n))

Parameters

  • target: search target string
  • key: string identifying characters to search for
  • pos = -1: position at which the search is to finish. -1 is equal to the length of search target string
  • n(opt): length of character string identifying characters to search for

Return value

xpos if the function can determine such a value for xpos. Otherwise, returns -1.

Example

const std = require('es-string-algorithm');
const s = 'Hello, world. Welcome to C++ world.';
const str = 'world';
console.log(std.findLastof(s, str, 25));// => 23
console.log(std.findLastof(s, ',.+', 5));// => 5
console.log(std.findLastof('arikitari na sekai', 'a', 1));// => 0
console.log(std.findLastof('🍣🍺', '🍺'));// => 1

findFirstNotOf

export declare const findFirstNotOf: (target: string, key: string, pos?: number, n?: number | undefined) => number;

Determines the lowest position xpos, if possible, such that both of the following conditions hold:

  1. pos <= xpos and xpos < std.size(target)
  2. !k.includes(at(target, xpos)) (When n is undefined (omitted), k is equal to key. Otherwise, k is equal to std.substr(key, 0, n))

Parameters

  • target: search target string
  • key: string identifying characters to search for
  • pos = 0: position at which to begin searching
  • n(opt): length of character string identifying characters to search for

Return value

xpos if the function can determine such a value for xpos. Otherwise, returns -1.

Example

const std = require('es-string-algorithm');
const s = 'Hello, world. Welcome to C++ world.';
const str = 'world';
console.log(std.findFirstNotOf(s, str, 2));// => 5
console.log(std.findFirstNotOf(s, 'worlde,. ', 1));// => 14
console.log(std.findFirstNotOf('arikitari na sekai datta', 't', 21));// => 23
console.log(std.findFirstNotOf('🍣🍺', '🍣'));// => 1

findLastNotof

export declare const findLastNotof: (target: string, key: string, pos?: number, n?: number | undefined) => number;

Determines the highest position xpos, if possible, such that both of the following conditions hold:

  1. pos <= xpos and xpos < std.size(target)
  2. k.includes(at(target, xpos)) (When n is undefined (omitted), k is equal to key. Otherwise, k is equal to std.substr(key, 0, n))

Parameters

  • target: search target string
  • key: string identifying characters to search for
  • pos = -1: position at which the search is to finish. -1 is equal to the length of search target string
  • n(opt): length of character string identifying characters to search for

Return value

xpos if the function can determine such a value for xpos. Otherwise, returns -1.

Example

const std = require('es-string-algorithm');
const s = 'Hello, world. Welcome to C++ world.';
const str = 'world';
console.log(std.findLastNotof(s, str, 11));// => 6
console.log(std.findLastNotof(s, 'Welcome to C++ world.', 1));// => 5
console.log(std.findLastNotof('arikitari na sekai', 'a', 0));// => -1
console.log(std.findLastNotof('🍣🍺', '🍺'));// => 0

find

export declare const find: (target: string, key: string, pos = 0, n?: number) => number;

Determines the lowest position xpos, if possible, such that both of the following conditions hold:

  1. xpos <= pos and xpos + n <= std.size(target)
  2. k.includes(at(target, xpos)) (When n is undefined (omitted), k is equal to key. Otherwise, k is equal to std.substr(key, 0, n))

Parameters

  • target: search target string
  • key: string identifying characters to search for
  • pos = 0: position at which to begin searching
  • n(opt): length of character string identifying characters to search for

Return value

xpos if the function can determine such a value for xpos. Otherwise, returns -1.

Example

const std = require('es-string-algorithm');
const s = 'Hello, world. Welcome to C++ world.';
const str = 'world';
console.log(std.find(s, findWord));// => 7
console.log(std.find(s, findWord, 12));// => 29
console.log(std.find(s, findWord, 33));// => -1
console.log(std.find('πŸ£πŸΊπŸ“§πŸ’Ύ', 'πŸΊπŸ“§'));// => 1

rfind

export declare const rfind: (target: string, key: string, pos = -1, n?: number) => number;

Determines the highest position xpos, if possible, such that both of the following conditions hold:

  1. xpos <= pos and xpos + n <= std.size(target)
  2. k.includes(at(target, xpos)) (When n is undefined (omitted), k is equal to key. Otherwise, k is equal to std.substr(key, 0, n))

Parameters

  • target: search target string
  • key: string identifying characters to search for
  • pos = -1: position at which to begin searching
  • n(opt): length of character string identifying characters to search for

Return value

xpos if the function can determine such a value for xpos. Otherwise, returns -1.

Example

const std = require('es-string-algorithm');
const s = 'Hello, world. Welcome to C++ world.';
const str = 'world';
console.log(std.rfind(s, findWord, 29));// => 29
console.log(std.rfind(s, findWord, 28));// => 7
console.log(std.rfind(s, 'W', 29));// => 14
console.log(std.rfind('πŸ£πŸΊπŸ“§πŸ’Ύ', 'πŸΊπŸ“§'));// => 1

substr

export declare const substr: (s: string, pos?: number, n?: number | undefined) => string;

Create part of the s

Parameters

  • s: string
  • pos = 0: copy start position
  • n(opt): copy length

Return value

part of the s in range of [pos...rlast] (rlast is the smaller of pos + n and std.size(s))

Exception

Throws RangeError when pos or n is negative or pos > std.size(s)

size

export declare const size: (s: string) => number;

A count of the number of codepoint currently in the string.

Parameters

  • s: string

Complexity

O(n)

1.1.0

4 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago