Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sindresorhus/replace-string
Replace all substring matches in a string
https://github.com/sindresorhus/replace-string
Last synced: about 1 month ago
JSON representation
Replace all substring matches in a string
- Host: GitHub
- URL: https://github.com/sindresorhus/replace-string
- Owner: sindresorhus
- License: mit
- Created: 2017-01-05T12:51:23.000Z (almost 8 years ago)
- Default Branch: main
- Last Pushed: 2021-08-09T20:24:10.000Z (over 3 years ago)
- Last Synced: 2024-04-13T17:53:53.402Z (7 months ago)
- Language: JavaScript
- Size: 17.6 KB
- Stars: 89
- Watchers: 7
- Forks: 12
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: license
Awesome Lists containing this project
README
# replace-string
> Replace all substring matches in a string
Similar to `String#replace()`, but supports replacing multiple matches. You could achieve something similar by putting the string in a `RegExp` constructor with the global flag and passing it to `String#replace()`, but you would then have to first escape the string anyways.
*With [Node.js 16](https://medium.com/@nodejs/node-js-v15-0-0-is-here-deb00750f278), this package is partly moot as there is now a [`String#replaceAll`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll) method. However, it does not have a `caseInsensitive` option.*
## Install
```
$ npm install replace-string
```## Usage
```js
import replaceString from 'replace-string';const string = 'My friend has a 🐑. I want a 🐑 too!';
replaceString(string, '🐑', '🦄');
//=> 'My friend has a 🦄. I want a 🦄 too!'
```## API
### replaceString(string, needle, replacement, options?)
Returns a new string with all `needle` matches replaced with `replacement`.
#### string
Type: `string`
The string to work on.
#### needle
Type: `string`
The string to match in `input`.
#### replacement
Type: `string | Function`
The replacement for `needle` matches.
If a function, it receives the matched substring, the match count, the original input, and the index in which the match happened (as measured from the original input):
```js
import replaceString from 'replace-string';replaceString('Foo 🐑 Bar', '🐑', (matchedSubstring, matchCount, input, matchIndex) => `${matchedSubstring}❤️`);
//=> 'Foo 🐑❤️ Bar'
```#### options
Type: `object`
##### fromIndex
Type: `number`\
Default: `0`Index at which to start replacing.
##### caseInsensitive
Type: `boolean`\
Default: `false`Whether or not substring matching should be case-insensitive.
## Related
- [execall](https://github.com/sindresorhus/execall) - Find multiple `RegExp` matches in a string