diff --git a/snippets/wordWrap.md b/snippets/wordWrap.md new file mode 100644 index 000000000..81f6550af --- /dev/null +++ b/snippets/wordWrap.md @@ -0,0 +1,20 @@ +--- +title: wordWrap +tags: string,regexp,intermediate +--- + +Wraps a string to a given number of characters using a string break character. + +- Use `String.prototype.replace()` and a regular expression to insert a given break character at the nearest whitespace of `max` characters. +- Omit the third argument, `br`, to use the default value of `'\n'`. + +```js +const wordWrap = (s, max, br = '\n') => s.replace( + new RegExp(`(?![^\\n]{1,${max}}$)([^\\n]{1,${max}})\\s`, 'g'), '$1' + br +); +``` + +```js +wordWrap('Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce tempus.', 32) // 'Lorem ipsum dolor sit amet,\nconsectetur adipiscing elit.\nFusce tempus.' +wordWrap('Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce tempus.', 32, '\r\n') // 'Lorem ipsum dolor sit amet,\r\nconsectetur adipiscing elit.\r\nFusce tempus.' +```