介绍 strfi:用于 JavaScript 与 TypeScript 的终极字符串工具库

发布: (2026年1月4日 GMT+8 16:40)
3 min read
原文: Dev.to

Source: Dev.to

介绍

Hey dev.to community! 👋

我很高兴向大家宣布 strfi —— 一个全面、零依赖、可树摇的集合,提供超过 150 个纯字符串工具,适用于现代 JavaScript 和 TypeScript 项目。

如果你厌倦了为简单的字符串任务(如生成 slug、转义 HTML、计算编辑距离或格式化字节)而引入庞大的库,strfi 将成为你轻量却强大的字符串工具箱。

  • 零运行时依赖
  • 完全可树摇 —— 只导入你需要的函数
  • 出色的 TypeScript 支持,类型精确
  • 在适用的情况下支持 Unicode 和地区敏感
  • 无不安全的做法(没有 eval() 等)
  • 极小的压缩后体积:约 22 KB
  • 兼容所有环境:Node.js 16+、现代浏览器、Deno、Bun、React Native、Cloudflare Workers

安装

npm install strfi

或者使用 Yarn / pnpm:

yarn add strfi
# or
pnpm add strfi

使用示例

import {
  slugify,
  escapeHtml,
  capitalize,
  levenshteinDistance,
  formatBytes,
  camelCase,
  truncate,
  isEmail,
} from 'strfi';

console.log(slugify('Hello World! 🚀'));                     // "hello-world"
console.log(escapeHtml('alert("xss")'));                     // "<script>alert("xss")</script>"
console.log(capitalize('javascript'));                     // "Javascript"
console.log(levenshteinDistance('kitten', 'sitting'));     // 3
console.log(formatBytes(1500000));                         // "1.43 MB"
console.log(camelCase('foo-bar_baz'));                     // "fooBarBaz"
console.log(truncate('Very long text here', { length: 10 })); // "Very lo..."
console.log(isEmail('test@example.com'));                  // true

所有功能 – 按类别分组

大小写转换

  • toUpperCase, toLowerCase, capitalize, uncapitalize, titleCase, camelCase, pascalCase, snakeCase, kebabCase, constantCase, dotCase, pathCase, sentenceCase, swapCase
  • isUpperCase, isLowerCase, isTitleCase

空白字符操作

  • trim, trimStart, trimEnd, trimChars, trimCharsStart, trimCharsEnd
  • collapseWhitespace, removeWhitespace, padStart, padEnd, center, repeat, insert, removeAt, indent, dedent

字符串操作

  • reverse, truncate, truncateMiddle, wordWrap, slugify, between, betweenAll, remove, replaceFirst, replaceLast, replaceAll, mask, shuffle, chunk, splitBy, join, stripTags, normalizeLineEndings, surround, ensurePrefix, ensureSuffix, removePrefix, removeSuffix, lines, first, last

字符串验证

  • isBlank, isNotBlank, isEmpty, isNotEmpty, isAlpha, isAlphanumeric, isNumeric, isInteger, isDecimal, isAscii, isPrintableAscii, isHexadecimal, isUUID, isEmail, isURL, isJSON, isIPv4, isIPv6, isCreditCard, isSlug
  • startsWith, endsWith, contains, containsAll, containsAny, matches, compare, equals, equalsIgnoreCase, isPalindrome, isWhitespace, hasUpperCase, hasLowerCase, hasDigits, hasSpecialChars

编码与转义

  • escapeHtml, unescapeHtml, escapeXml, unescapeXml, escapeRegex, escapeSqlLike, escapeShell
  • toBase64, fromBase64, toBase64Url, fromBase64Url, encodeUrl, decodeUrl, toHex, fromHex, toAsciiCodes, fromAsciiCodes, rot13

搜索与分析

  • countOccurrences, countWords, countLines, countSentences, countParagraphs
  • charFrequency, wordFrequency, indicesOf, nthIndexOf
  • extractNumbers, extractWords, extractEmails, extractUrls, extractHashtags, extractMentions
  • levenshteinDistance, similarity, longestCommonSubstring, longestCommonPrefix, longestCommonSuffix

Unicode 与国际化

  • normalize, removeDiacritics, toCodePoints, fromCodePoints, graphemeLength, toGraphemes, toWords
  • isLetter, isDigit, isSpace, isPunctuation, isRTL, isLTR, getDirection
  • formatNumber, formatDate, formatCurrency, formatRelativeTime, pluralize, collate
  • getLocaleDisplayName, getRegionDisplayName

格式化与实用工具

  • template, format, formatNamed, sprintf, zeroPad, formatThousands, formatBytes, formatDuration, ordinal, loremIpsum, randomString, uuid, hashCode

接下来是什么?

  • npm: (link to package)
  • GitHub: (repository link)

如果你尝试了 strfi,请在评论中告诉我——你最喜欢的工具是什么?有没有想要看到的缺失功能?

非常感谢你的星标、反馈和分享。谢谢! 🚀

祝编码愉快!

Back to Blog

相关文章

阅读更多 »

Anguar 小技巧 #4

介绍 一些关于使用 Angular 的技巧——来自前端开发者 第四部分。这些技巧假设你已经具备 Angular 经验,所以我们不会深入……