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
: 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 < std.size(target)
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 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 < std.size(target)
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 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 < std.size(target)
!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 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 < std.size(target)
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 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('🍣🍺', '🍺'));
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
and xpos + n <= std.size(target)
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 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.find(s, findWord));
console.log(std.find(s, findWord, 12));
console.log(std.find(s, findWord, 33));
console.log(std.find('🍣🍺📧💾', '🍺📧'));
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
and xpos + n <= std.size(target)
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 stringkey
: string identifying characters to search forpos = -1
: 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.rfind(s, findWord, 29));
console.log(std.rfind(s, findWord, 28));
console.log(std.rfind(s, 'W', 29));
console.log(std.rfind('🍣🍺📧💾', '🍺📧'));
substr
export declare const substr: (s: string, pos?: number, n?: number | undefined) => string;
Create part of the s
Parameters
s
: stringpos = 0
: copy start positionn
(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
Complexity
O(n)