介绍 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,swapCaseisUpperCase,isLowerCase,isTitleCase
空白字符操作
trim,trimStart,trimEnd,trimChars,trimCharsStart,trimCharsEndcollapseWhitespace,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,isSlugstartsWith,endsWith,contains,containsAll,containsAny,matches,compare,equals,equalsIgnoreCase,isPalindrome,isWhitespace,hasUpperCase,hasLowerCase,hasDigits,hasSpecialChars
编码与转义
escapeHtml,unescapeHtml,escapeXml,unescapeXml,escapeRegex,escapeSqlLike,escapeShelltoBase64,fromBase64,toBase64Url,fromBase64Url,encodeUrl,decodeUrl,toHex,fromHex,toAsciiCodes,fromAsciiCodes,rot13
搜索与分析
countOccurrences,countWords,countLines,countSentences,countParagraphscharFrequency,wordFrequency,indicesOf,nthIndexOfextractNumbers,extractWords,extractEmails,extractUrls,extractHashtags,extractMentionslevenshteinDistance,similarity,longestCommonSubstring,longestCommonPrefix,longestCommonSuffix
Unicode 与国际化
normalize,removeDiacritics,toCodePoints,fromCodePoints,graphemeLength,toGraphemes,toWordsisLetter,isDigit,isSpace,isPunctuation,isRTL,isLTR,getDirectionformatNumber,formatDate,formatCurrency,formatRelativeTime,pluralize,collategetLocaleDisplayName,getRegionDisplayName
格式化与实用工具
template,format,formatNamed,sprintf,zeroPad,formatThousands,formatBytes,formatDuration,ordinal,loremIpsum,randomString,uuid,hashCode
接下来是什么?
- npm: (link to package)
- GitHub: (repository link)
如果你尝试了 strfi,请在评论中告诉我——你最喜欢的工具是什么?有没有想要看到的缺失功能?
非常感谢你的星标、反馈和分享。谢谢! 🚀
祝编码愉快!