{"id":21140669,"url":"https://github.com/stdlib-js/string-base","last_synced_at":"2025-10-28T13:15:32.397Z","repository":{"id":41352791,"uuid":"477742207","full_name":"stdlib-js/string-base","owner":"stdlib-js","description":"Base (i.e., lower-level) string functions.","archived":false,"fork":false,"pushed_at":"2024-11-20T03:42:57.000Z","size":3258,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-11-20T04:26:20.113Z","etag":null,"topics":["base","javascript","node","node-js","nodejs","stdlib","str","string","util","utilities","utility","utils"],"latest_commit_sha":null,"homepage":"https://github.com/stdlib-js/stdlib","language":"JavaScript","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stdlib-js.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["stdlib-js"],"open_collective":"stdlib","tidelift":"npm/@stdlib/stdlib"}},"created_at":"2022-04-04T14:39:31.000Z","updated_at":"2024-11-20T03:35:16.000Z","dependencies_parsed_at":"2024-01-10T05:07:34.818Z","dependency_job_id":"59396a78-33fb-4558-bbb5-b7962113280c","html_url":"https://github.com/stdlib-js/string-base","commit_stats":{"total_commits":88,"total_committers":2,"mean_commits":44.0,"dds":0.1477272727272727,"last_synced_commit":"6c29f5ef02ffdf04aee9a16520ed6ce7436f03d1"},"previous_names":[],"tags_count":33,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stdlib-js%2Fstring-base","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stdlib-js%2Fstring-base/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stdlib-js%2Fstring-base/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stdlib-js%2Fstring-base/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stdlib-js","download_url":"https://codeload.github.com/stdlib-js/string-base/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225470803,"owners_count":17479368,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["base","javascript","node","node-js","nodejs","stdlib","str","string","util","utilities","utility","utils"],"created_at":"2024-11-20T07:17:07.661Z","updated_at":"2025-10-03T18:23:25.529Z","avatar_url":"https://github.com/stdlib-js.png","language":"JavaScript","funding_links":["https://github.com/sponsors/stdlib-js","https://opencollective.com/stdlib","https://tidelift.com/funding/github/npm/@stdlib/stdlib"],"categories":[],"sub_categories":[],"readme":"\u003c!--\n\n@license Apache-2.0\n\nCopyright (c) 2022 The Stdlib Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n--\u003e\n\n\n\u003cdetails\u003e\n  \u003csummary\u003e\n    About stdlib...\n  \u003c/summary\u003e\n  \u003cp\u003eWe believe in a future in which the web is a preferred environment for numerical computation. To help realize this future, we've built stdlib. stdlib is a standard library, with an emphasis on numerical and scientific computation, written in JavaScript (and C) for execution in browsers and in Node.js.\u003c/p\u003e\n  \u003cp\u003eThe library is fully decomposable, being architected in such a way that you can swap out and mix and match APIs and functionality to cater to your exact preferences and use cases.\u003c/p\u003e\n  \u003cp\u003eWhen you use stdlib, you can be absolutely certain that you are using the most thorough, rigorous, well-written, studied, documented, tested, measured, and high-quality code out there.\u003c/p\u003e\n  \u003cp\u003eTo join us in bringing numerical computing to the web, get started by checking us out on \u003ca href=\"https://github.com/stdlib-js/stdlib\"\u003eGitHub\u003c/a\u003e, and please consider \u003ca href=\"https://opencollective.com/stdlib\"\u003efinancially supporting stdlib\u003c/a\u003e. We greatly appreciate your continued support!\u003c/p\u003e\n\u003c/details\u003e\n\n# Base String\n\n[![NPM version][npm-image]][npm-url] [![Build Status][test-image]][test-url] [![Coverage Status][coverage-image]][coverage-url] \u003c!-- [![dependencies][dependencies-image]][dependencies-url] --\u003e\n\n\u003e Base (i.e., lower-level) string functions.\n\n\u003csection class=\"installation\"\u003e\n\n## Installation\n\n```bash\nnpm install @stdlib/string-base\n```\n\nAlternatively,\n\n-   To load the package in a website via a `script` tag without installation and bundlers, use the [ES Module][es-module] available on the [`esm`][esm-url] branch (see [README][esm-readme]).\n-   If you are using Deno, visit the [`deno`][deno-url] branch (see [README][deno-readme] for usage intructions).\n-   For use in Observable, or in browser/node environments, use the [Universal Module Definition (UMD)][umd] build available on the [`umd`][umd-url] branch (see [README][umd-readme]).\n\nThe [branches.md][branches-url] file summarizes the available branches and displays a diagram illustrating their relationships.\n\nTo view installation and usage instructions specific to each branch build, be sure to explicitly navigate to the respective README files on each branch, as linked to above.\n\n\u003c/section\u003e\n\n\u003csection class=\"usage\"\u003e\n\n## Usage\n\n```javascript\nvar string = require( '@stdlib/string-base' );\n```\n\n#### string\n\nNamespace containing \"base\" (i.e., lower-level) string functions.\n\n```javascript\nvar ns = string;\n// returns {...}\n```\n\nThe namespace contains the following functions:\n\n\u003c!-- \u003ctoc pattern=\"*\"\u003e --\u003e\n\n\u003cdiv class=\"namespace-toc\"\u003e\n\n-   \u003cspan class=\"signature\"\u003e[`altcase( str )`][@stdlib/string/base/altcase]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003econvert a string to alternate case.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`atob( str )`][@stdlib/string/base/atob]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003edecode a string of data which has been encoded using Base64 encoding.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`base64ToUint8Array( str )`][@stdlib/string/base/base64-to-uint8array]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003econvert a Base64-encoded string to a Uint8Array.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`camelcase( str )`][@stdlib/string/base/camelcase]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003econvert a string to camel case.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`capitalize( str )`][@stdlib/string/base/capitalize]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003ecapitalize the first character in a string.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`codePointAt( string, position, backward )`][@stdlib/string/base/code-point-at]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003ereturn a Unicode code point from a string at a specified position.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`constantcase( str )`][@stdlib/string/base/constantcase]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003econvert a string to constant case.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`distances`][@stdlib/string/base/distances]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003eimplementations of various string similarity metrics.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`dotcase( str )`][@stdlib/string/base/dotcase]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003econvert a string to dot case.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`endsWith( str, search, len )`][@stdlib/string/base/ends-with]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003etest if a string ends with the characters of another string.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`firstCodePoint( str, n )`][@stdlib/string/base/first-code-point]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003ereturn the first `n` Unicode code points of a string.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`firstGraphemeCluster( str, n )`][@stdlib/string/base/first-grapheme-cluster]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003ereturn the first `n` grapheme clusters (i.e., user-perceived characters) of a string.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`first( str, n )`][@stdlib/string/base/first]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003ereturn the first `n` UTF-16 code units of a string.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`forEachCodePointRight( str, clbk[, thisArg ] )`][@stdlib/string/base/for-each-code-point-right]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003einvokes a function for each Unicode code point in a string, iterating from right to left.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`forEachCodePoint( str, clbk[, thisArg ] )`][@stdlib/string/base/for-each-code-point]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003einvokes a function for each Unicode code point in a string.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`forEachGraphemeCluster( str, clbk[, thisArg ] )`][@stdlib/string/base/for-each-grapheme-cluster]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003einvokes a function for each grapheme cluster (i.e., user-perceived character) in a string.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`forEachRight( str, clbk[, thisArg ] )`][@stdlib/string/base/for-each-right]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003einvokes a function for each UTF-16 code unit in a string, iterating from right to left.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`forEach( str, clbk[, thisArg ] )`][@stdlib/string/base/for-each]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003einvokes a function for each UTF-16 code unit in a string.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`formatInterpolate( tokens, ...args )`][@stdlib/string/base/format-interpolate]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003egenerate string from a token array by interpolating values.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`formatTokenize( str )`][@stdlib/string/base/format-tokenize]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003etokenize a string into an array of string parts and format identifier objects.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`headercase( str )`][@stdlib/string/base/headercase]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003econvert a string to HTTP header case.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`invcase( str )`][@stdlib/string/base/invcase]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003econvert a string to inverse case.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`kebabcase( str )`][@stdlib/string/base/kebabcase]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003econvert a string to kebab case.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`lastCodePoint( str, n )`][@stdlib/string/base/last-code-point]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003ereturn the last `n` Unicode code points of a string.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`lastGraphemeCluster( str, n )`][@stdlib/string/base/last-grapheme-cluster]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003ereturn the last `n` grapheme clusters (i.e., user-perceived characters) of a string.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`last( str, n )`][@stdlib/string/base/last]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003ereturn the last `n` UTF-16 code units of a string.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`lpad( str, len, pad )`][@stdlib/string/base/left-pad]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003eleft pad a string.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`ltrim( str )`][@stdlib/string/base/left-trim]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003etrim whitespace characters from the beginning of a string.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`lowercase( str )`][@stdlib/string/base/lowercase]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003econvert a string to lowercase.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`pascalcase( str )`][@stdlib/string/base/pascalcase]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003econvert a string to Pascal case.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`percentEncode( str )`][@stdlib/string/base/percent-encode]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003epercent-encode a UTF-16 encoded string according to RFC 3986.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`removeFirstCodePoint( str, n )`][@stdlib/string/base/remove-first-code-point]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003eremove the first `n` Unicode code points of a string.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`removeFirstGraphemeCluster( str, n )`][@stdlib/string/base/remove-first-grapheme-cluster]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003eremove the first `n` grapheme clusters (i.e., user-perceived characters) of a string.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`removeFirst( str, n )`][@stdlib/string/base/remove-first]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003eremove the first `n` UTF-16 code units of a string.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`removeLastCodePoint( str, n )`][@stdlib/string/base/remove-last-code-point]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003eremove the last `n` Unicode code points of a string.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`removeLastGraphemeCluster( str, n )`][@stdlib/string/base/remove-last-grapheme-cluster]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003eremove the last `n` grapheme clusters (i.e., user-perceived characters) of a string.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`removeLast( str, n )`][@stdlib/string/base/remove-last]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003eremove the last `n` UTF-16 code units of a string.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`repeat( str, n )`][@stdlib/string/base/repeat]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003erepeat a string a specified number of times and return the concatenated result.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`replaceAfterLast( str, search, replacement, fromIndex )`][@stdlib/string/base/replace-after-last]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003ereplace the substring after the last occurrence of a specified search string.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`replaceAfter( str, search, replacement, fromIndex )`][@stdlib/string/base/replace-after]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003ereplace the substring after the first occurrence of a specified search string.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`replaceBeforeLast( str, search, replacement, fromIndex )`][@stdlib/string/base/replace-before-last]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003ereplace the substring before the last occurrence of a specified search string.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`replaceBefore( str, search, replacement, fromIndex )`][@stdlib/string/base/replace-before]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003ereplace the substring before the first occurrence of a specified search string.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`replace( str, search, newval )`][@stdlib/string/base/replace]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003ereplace search occurrences with a replacement string.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`reverseCodePoints( str )`][@stdlib/string/base/reverse-code-points]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003ereverse the Unicode code points of a string.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`reverseGraphemeClusters( str )`][@stdlib/string/base/reverse-grapheme-clusters]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003ereverse the grapheme clusters (i.e., user-perceived characters) of a string.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`reverse( str )`][@stdlib/string/base/reverse]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003ereverse the UTF-16 code units of a string.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`rpad( str, len, pad )`][@stdlib/string/base/right-pad]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003eright pad a string.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`rtrim( str )`][@stdlib/string/base/right-trim]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003etrim whitespace characters from the end of a string.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`snakecase( str )`][@stdlib/string/base/snakecase]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003econvert a string to snake case.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`startcase( str )`][@stdlib/string/base/startcase]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003ecapitalize the first letter of each word in a string.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`startsWith( str, search, position )`][@stdlib/string/base/starts-with]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003etest if a string starts with the characters of another string.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`stickycase( str[, p] )`][@stdlib/string/base/stickycase]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003econvert a string to sticky case.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`trim( str )`][@stdlib/string/base/trim]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003etrim whitespace characters from the beginning and end of a string.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`truncateMiddle( str, len, seq )`][@stdlib/string/base/truncate-middle]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003etruncate the middle UTF-16 code units of a string to return a string having a specified length.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`uncapitalize( str )`][@stdlib/string/base/uncapitalize]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003euncapitalize the first character of a string.\u003c/span\u003e\n-   \u003cspan class=\"signature\"\u003e[`uppercase( str )`][@stdlib/string/base/uppercase]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003econvert a string to uppercase.\u003c/span\u003e\n\n\u003c/div\u003e\n\n\u003c!-- \u003c/toc\u003e --\u003e\n\n\u003c/section\u003e\n\n\u003c!-- /.usage --\u003e\n\n\u003c!-- Package notes. Make sure to keep an empty line after the `section` element and another before the `/section` close. --\u003e\n\n\u003csection class=\"notes\"\u003e\n\n\u003c/section\u003e\n\n\u003c!-- /.notes --\u003e\n\n\u003csection class=\"examples\"\u003e\n\n## Examples\n\n\u003c!-- TODO: better examples --\u003e\n\n\u003c!-- eslint no-undef: \"error\", @cspell/spellchecker: \"off\" --\u003e\n\n```javascript\nvar ns = require( '@stdlib/string-base' );\n\n// Generate a Pascal case string...\nvar str = ns.pascalcase( 'beep boop' );\n// returns 'BeepBoop'\n\n// Tokenize a string into an array of string parts and format identifier objects...\nstr = 'The %d %s foxes jumped over the %d %s dogs.';\nvar tokens = ns.formatTokenize( str );\n// returns [ 'The ', {...}, ' ', {...}, ' foxes jumped over the ', {...}, ' ', {...}, ' dogs.' ]\n\n// Generate a string from a token array by interpolating values...\nstr = ns.formatInterpolate( tokens, 3, 'quick', 4, 'lazy' );\n// returns 'The 3 quick foxes jumped over the 4 lazy dogs.'\n\n// Test whether a string starts with the characters of another string...\nstr = 'Lorem ipsum dolor sit amet';\nvar bool = ns.startsWith( str, 'Lorem' );\n// returns true\n\n// Test whether a string ends with the characters of another string...\nbool = ns.endsWith( str, 'amet' );\n// returns true\n\n// Trim whitespace characters from the beginning and end of a string...\nstr = '   \\t\\n Lorem ipsum dolor sit amet   \\n\\t  ';\nstr = ns.trim( str );\n// returns 'Lorem ipsum dolor sit amet'\n```\n\n\u003c/section\u003e\n\n\u003c!-- /.examples --\u003e\n\n\u003c!-- Section for related `stdlib` packages. Do not manually edit this section, as it is automatically populated. --\u003e\n\n\u003csection class=\"related\"\u003e\n\n\u003c/section\u003e\n\n\u003c!-- /.related --\u003e\n\n\u003c!-- Section for all links. Make sure to keep an empty line after the `section` element and another before the `/section` close. --\u003e\n\n\n\u003csection class=\"main-repo\" \u003e\n\n* * *\n\n## Notice\n\nThis package is part of [stdlib][stdlib], a standard library for JavaScript and Node.js, with an emphasis on numerical and scientific computing. The library provides a collection of robust, high performance libraries for mathematics, statistics, streams, utilities, and more.\n\nFor more information on the project, filing bug reports and feature requests, and guidance on how to develop [stdlib][stdlib], see the main project [repository][stdlib].\n\n#### Community\n\n[![Chat][chat-image]][chat-url]\n\n---\n\n## License\n\nSee [LICENSE][stdlib-license].\n\n\n## Copyright\n\nCopyright \u0026copy; 2016-2025. The Stdlib [Authors][stdlib-authors].\n\n\u003c/section\u003e\n\n\u003c!-- /.stdlib --\u003e\n\n\u003c!-- Section for all links. Make sure to keep an empty line after the `section` element and another before the `/section` close. --\u003e\n\n\u003csection class=\"links\"\u003e\n\n[npm-image]: http://img.shields.io/npm/v/@stdlib/string-base.svg\n[npm-url]: https://npmjs.org/package/@stdlib/string-base\n\n[test-image]: https://github.com/stdlib-js/string-base/actions/workflows/test.yml/badge.svg?branch=main\n[test-url]: https://github.com/stdlib-js/string-base/actions/workflows/test.yml?query=branch:main\n\n[coverage-image]: https://img.shields.io/codecov/c/github/stdlib-js/string-base/main.svg\n[coverage-url]: https://codecov.io/github/stdlib-js/string-base?branch=main\n\n\u003c!--\n\n[dependencies-image]: https://img.shields.io/david/stdlib-js/string-base.svg\n[dependencies-url]: https://david-dm.org/stdlib-js/string-base/main\n\n--\u003e\n\n[chat-image]: https://img.shields.io/gitter/room/stdlib-js/stdlib.svg\n[chat-url]: https://app.gitter.im/#/room/#stdlib-js_stdlib:gitter.im\n\n[stdlib]: https://github.com/stdlib-js/stdlib\n\n[stdlib-authors]: https://github.com/stdlib-js/stdlib/graphs/contributors\n\n[umd]: https://github.com/umdjs/umd\n[es-module]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules\n\n[deno-url]: https://github.com/stdlib-js/string-base/tree/deno\n[deno-readme]: https://github.com/stdlib-js/string-base/blob/deno/README.md\n[umd-url]: https://github.com/stdlib-js/string-base/tree/umd\n[umd-readme]: https://github.com/stdlib-js/string-base/blob/umd/README.md\n[esm-url]: https://github.com/stdlib-js/string-base/tree/esm\n[esm-readme]: https://github.com/stdlib-js/string-base/blob/esm/README.md\n[branches-url]: https://github.com/stdlib-js/string-base/blob/main/branches.md\n\n[stdlib-license]: https://raw.githubusercontent.com/stdlib-js/string-base/main/LICENSE\n\n\u003c!-- \u003ctoc-links\u003e --\u003e\n\n[@stdlib/string/base/altcase]: https://github.com/stdlib-js/string-base-altcase\n\n[@stdlib/string/base/atob]: https://github.com/stdlib-js/string-base-atob\n\n[@stdlib/string/base/base64-to-uint8array]: https://github.com/stdlib-js/string-base-base64-to-uint8array\n\n[@stdlib/string/base/camelcase]: https://github.com/stdlib-js/string-base-camelcase\n\n[@stdlib/string/base/capitalize]: https://github.com/stdlib-js/string-base-capitalize\n\n[@stdlib/string/base/code-point-at]: https://github.com/stdlib-js/string-base-code-point-at\n\n[@stdlib/string/base/constantcase]: https://github.com/stdlib-js/string-base-constantcase\n\n[@stdlib/string/base/distances]: https://github.com/stdlib-js/string-base-distances\n\n[@stdlib/string/base/dotcase]: https://github.com/stdlib-js/string-base-dotcase\n\n[@stdlib/string/base/ends-with]: https://github.com/stdlib-js/string-base-ends-with\n\n[@stdlib/string/base/first-code-point]: https://github.com/stdlib-js/string-base-first-code-point\n\n[@stdlib/string/base/first-grapheme-cluster]: https://github.com/stdlib-js/string-base-first-grapheme-cluster\n\n[@stdlib/string/base/first]: https://github.com/stdlib-js/string-base-first\n\n[@stdlib/string/base/for-each-code-point-right]: https://github.com/stdlib-js/string-base-for-each-code-point-right\n\n[@stdlib/string/base/for-each-code-point]: https://github.com/stdlib-js/string-base-for-each-code-point\n\n[@stdlib/string/base/for-each-grapheme-cluster]: https://github.com/stdlib-js/string-base-for-each-grapheme-cluster\n\n[@stdlib/string/base/for-each-right]: https://github.com/stdlib-js/string-base-for-each-right\n\n[@stdlib/string/base/for-each]: https://github.com/stdlib-js/string-base-for-each\n\n[@stdlib/string/base/format-interpolate]: https://github.com/stdlib-js/string-base-format-interpolate\n\n[@stdlib/string/base/format-tokenize]: https://github.com/stdlib-js/string-base-format-tokenize\n\n[@stdlib/string/base/headercase]: https://github.com/stdlib-js/string-base-headercase\n\n[@stdlib/string/base/invcase]: https://github.com/stdlib-js/string-base-invcase\n\n[@stdlib/string/base/kebabcase]: https://github.com/stdlib-js/string-base-kebabcase\n\n[@stdlib/string/base/last-code-point]: https://github.com/stdlib-js/string-base-last-code-point\n\n[@stdlib/string/base/last-grapheme-cluster]: https://github.com/stdlib-js/string-base-last-grapheme-cluster\n\n[@stdlib/string/base/last]: https://github.com/stdlib-js/string-base-last\n\n[@stdlib/string/base/left-pad]: https://github.com/stdlib-js/string-base-left-pad\n\n[@stdlib/string/base/left-trim]: https://github.com/stdlib-js/string-base-left-trim\n\n[@stdlib/string/base/lowercase]: https://github.com/stdlib-js/string-base-lowercase\n\n[@stdlib/string/base/pascalcase]: https://github.com/stdlib-js/string-base-pascalcase\n\n[@stdlib/string/base/percent-encode]: https://github.com/stdlib-js/string-base-percent-encode\n\n[@stdlib/string/base/remove-first-code-point]: https://github.com/stdlib-js/string-base-remove-first-code-point\n\n[@stdlib/string/base/remove-first-grapheme-cluster]: https://github.com/stdlib-js/string-base-remove-first-grapheme-cluster\n\n[@stdlib/string/base/remove-first]: https://github.com/stdlib-js/string-base-remove-first\n\n[@stdlib/string/base/remove-last-code-point]: https://github.com/stdlib-js/string-base-remove-last-code-point\n\n[@stdlib/string/base/remove-last-grapheme-cluster]: https://github.com/stdlib-js/string-base-remove-last-grapheme-cluster\n\n[@stdlib/string/base/remove-last]: https://github.com/stdlib-js/string-base-remove-last\n\n[@stdlib/string/base/repeat]: https://github.com/stdlib-js/string-base-repeat\n\n[@stdlib/string/base/replace-after-last]: https://github.com/stdlib-js/string-base-replace-after-last\n\n[@stdlib/string/base/replace-after]: https://github.com/stdlib-js/string-base-replace-after\n\n[@stdlib/string/base/replace-before-last]: https://github.com/stdlib-js/string-base-replace-before-last\n\n[@stdlib/string/base/replace-before]: https://github.com/stdlib-js/string-base-replace-before\n\n[@stdlib/string/base/replace]: https://github.com/stdlib-js/string-base-replace\n\n[@stdlib/string/base/reverse-code-points]: https://github.com/stdlib-js/string-base-reverse-code-points\n\n[@stdlib/string/base/reverse-grapheme-clusters]: https://github.com/stdlib-js/string-base-reverse-grapheme-clusters\n\n[@stdlib/string/base/reverse]: https://github.com/stdlib-js/string-base-reverse\n\n[@stdlib/string/base/right-pad]: https://github.com/stdlib-js/string-base-right-pad\n\n[@stdlib/string/base/right-trim]: https://github.com/stdlib-js/string-base-right-trim\n\n[@stdlib/string/base/snakecase]: https://github.com/stdlib-js/string-base-snakecase\n\n[@stdlib/string/base/startcase]: https://github.com/stdlib-js/string-base-startcase\n\n[@stdlib/string/base/starts-with]: https://github.com/stdlib-js/string-base-starts-with\n\n[@stdlib/string/base/stickycase]: https://github.com/stdlib-js/string-base-stickycase\n\n[@stdlib/string/base/trim]: https://github.com/stdlib-js/string-base-trim\n\n[@stdlib/string/base/truncate-middle]: https://github.com/stdlib-js/string-base-truncate-middle\n\n[@stdlib/string/base/uncapitalize]: https://github.com/stdlib-js/string-base-uncapitalize\n\n[@stdlib/string/base/uppercase]: https://github.com/stdlib-js/string-base-uppercase\n\n\u003c!-- \u003c/toc-links\u003e --\u003e\n\n\u003c/section\u003e\n\n\u003c!-- /.links --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstdlib-js%2Fstring-base","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstdlib-js%2Fstring-base","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstdlib-js%2Fstring-base/lists"}