Skip to content

Like Javascript's string.replace, but accepts and returns an array

License

Notifications You must be signed in to change notification settings

appfigures/string-replace-to-array

Repository files navigation

String replace to array

string-replace-to-array MIT license on NPM string-replace-to-array on NPM Build Status string-replace-to-array total downloads on NPM string-replace-to-array monthly downloads on NPM

Works just like String.prototype.replace but outputs an array instead of a string. It's tiny (<1KB) and has no dependencies.

Why?

We built this for use with React, but it's very generic and doesn't depend on any environment. Consider the following scenario.

Given this string:

var content = 'Hello\nworld'

and this React markup:

<span>{ content }</span>

We'll get this output:

Hello world

The newline character is ignored when the browser renders the resulting html.

The solution is to replace \n with <br>:

<span>{ replace(content, '\n', <br>) }</span>

and the output will be:

<span>Hello</br>world</span>

When rendered:

Hello
world

Now the newline will be rendered properly. Yay!

Example usage

Simple example

var replace = require('string-replace-to-array')
replace('Hello Amy', 'Amy', { name: 'Amy' })
// output: ['Hello ', { name: 'Amy' }]

Full example

replace(
  'Hello Hermione Granger...',
  /(Hermione) (Granger)/g,
  function (fullName, firstName, lastName, offset, string) {
    return <Person firstName={ firstName } lastName={ lastName } />
  }
)

// output: ['Hello ', <Person firstName="Hermione" lastName="Granger" />, ...]

For a real-life example check out react-easy-emoji, where this this is used to replace emoji unicode characters with <img> tags.

Installation

npm install --save string-replace-to-array

API

(string, regexp|substr, newValue|function) => array

The API mimics String.prototype.replace. The only differences are:

  • The replacer (third parameter) doesn't have to be a string
  • Returns an array instead of a string

Inspiration

Mainly inspired by this conversation: facebook/react#3386

Because we needed the full API of String.replace, especially the regex match parameters which get passed to the replace function.

About

Like Javascript's string.replace, but accepts and returns an array

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published