es-string-algorithm
Introduction
C++ STL provide find_first_of
/ find_first_not_of
/ find_last_of
/ find_last_not_of
member function.
However, JavaScript String
class does not provide such method. So, this package provide these functions.
(When you want find
/ rfind
that C++ STL provide, please use indexOf
/ lastIndexOf
)
Reference
Every function manipulate a string as if that is UTF-32 encoded.
To describe simply, we use two function like below:
size(s: string) => number
: Returns the length of s
.at(s: string, n: number) => string
: Returns n
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
and xpos < size(target)
k.includes(at(target, xpos))
(When n
is undefined
(omitted), k
is equal to key
. Otherwise, k
is equal to key.substring(0, n)
)
Parameters
target
: search target stringkey
: string identifying characters to search forpos = 0
: position at which to begin searchingn
(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));
console.log(std.findFirstOf(s, ',.+', 14));
console.log(std.findFirstOf('arikitari na sekai', 'a', 1));
console.log(std.findFirstOf('🍣🍺', '🍺'));
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
and xpos < size(target)
k.includes(at(target, xpos))
(When n
is undefined
(omitted), k
is equal to key
. Otherwise, k
is equal to key.substring(0, n)
)
Parameters
target
: search target stringkey
: string identifying characters to search forpos = -1
: position at which the search is to finish. -1
is equal to the length of search target stringn
(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));
console.log(std.findLastof(s, ',.+', 5));
console.log(std.findLastof('arikitari na sekai', 'a', 1));
console.log(std.findLastof('🍣🍺', '🍺'));
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
and xpos < size(target)
!k.includes(at(target, xpos))
(When n
is undefined
(omitted), k
is equal to key
. Otherwise, k
is equal to key.substring(0, n)
)
Parameters
target
: search target stringkey
: string identifying characters to search forpos = 0
: position at which to begin searchingn
(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));
console.log(std.findFirstNotOf(s, 'worlde,. ', 1));
console.log(std.findFirstNotOf('arikitari na sekai datta', 't', 21));
console.log(std.findFirstNotOf('🍣🍺', '🍣'));
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
and xpos < size(target)
k.includes(at(target, xpos))
(When n
is undefined
(omitted), k
is equal to key
. Otherwise, k
is equal to key.substring(0, n)
)
Parameters
target
: search target stringkey
: string identifying characters to search forpos = -1
: position at which the search is to finish. -1
is equal to the length of search target stringn
(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));
console.log(std.findLastNotof(s, 'Welcome to C++ world.', 1));
console.log(std.findLastNotof('arikitari na sekai', 'a', 0));
console.log(std.findLastNotof('🍣🍺', '🍺'));