very comprehensive case-preserving string.replace
MIT License
case-preserving string.replace
npm install --save preserve-case
import replace from 'preserve-case'
console.log(replace.all('foo bar FOO_BAR foo-bar fooBar foo-Bar', 'foo bar', 'baz qux'))
// baz qux BAZ_QUX baz-qux bazQux baz-Qux
replace(str, query, replacement, [options])
replace(
str: string,
query: string | RegExp,
replacement: string | Function,
options?: {
caseTypes?: Array<string>
}
): string`
Works exactly like str.replace(query, replacement)
, except that:
case
package)query
is a string, it matches query
in any case. (Under the hood, it creates and usesRegExp
with all caseTypes
of query
joined together, e.g.str.replace(/foo bar|FOO BAR|fooBar|FooBar|.../, ...)
)options.caseTypes
defaults to all types built into the case
package.
This may be more than you want, so look into it. For instance, the other cases of 'foo bar' include, but may not be
limited to:
'Foo Bar'
'Foo bar'
'FOO BAR'
'fooBar'
'FooBar'
'foo-bar'
'Foo-Bar'
'foo_bar'
'FOO_BAR'
replace.all(str, query, replacement, [options])
Unlike replace
, this replaces all occurrences of query
, not just the first one, even if query
is a string
or
a RegExp
without the g
(global) flag.
Thanks to Nathan Bubna for his case
package, which powers preserve-case
!
replace.createSearchRegExp(query, [options])
Creates a RegExp
that matches for any case of the given query
string.
Like the other functions, options.caseTypes
defaults to all types built into
the case
package.
You may also pass a flags
option for the RegExp
flags (e.g. flags: 'g'
)