es-string-algorithm
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
: Returnsn
th 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:
-
pos <= xpos
andxpos < std.size(target)
-
k.includes(at(target, xpos))
(Whenn
isundefined
(omitted),k
is equal tokey
. Otherwise,k
is equal tostd.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:
-
pos <= xpos
andxpos < std.size(target)
-
k.includes(at(target, xpos))
(Whenn
isundefined
(omitted),k
is equal tokey
. Otherwise,k
is equal tostd.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:
-
pos <= xpos
andxpos < std.size(target)
-
!k.includes(at(target, xpos))
(Whenn
isundefined
(omitted),k
is equal tokey
. Otherwise,k
is equal tostd.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:
-
pos <= xpos
andxpos < std.size(target)
-
k.includes(at(target, xpos))
(Whenn
isundefined
(omitted),k
is equal tokey
. Otherwise,k
is equal tostd.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:
-
xpos <= pos
andxpos + n <= std.size(target)
-
k.includes(at(target, xpos))
(Whenn
isundefined
(omitted),k
is equal tokey
. Otherwise,k
is equal tostd.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:
-
xpos <= pos
andxpos + n <= std.size(target)
-
k.includes(at(target, xpos))
(Whenn
isundefined
(omitted),k
is equal tokey
. Otherwise,k
is equal tostd.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)