前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >推荐 5 个 JavaScript 字符串插件库

推荐 5 个 JavaScript 字符串插件库

作者头像
前端达人
发布2021-10-25 13:36:48
9660
发布2021-10-25 13:36:48
举报
文章被收录于专栏:前端达人

英文 | https://blog.bitsrc.io/5-string-manipulation-libraries-for-javascript-9ca5da8b4eb8

翻译 | 杨小二

使用字符串可能是一项繁琐的任务,因为有许多不同的用例。例如,将字符串转换为驼峰式大小写这样的简单任务可能需要几行代码才能实现最终目标。

代码语言:javascript
复制
function camelize(str) {
  return str.replace(/(?:^\w|[A-Z]|\b\w|\s+)/g, function(match, index) {
    if (+match === 0) return ""; // or if (/\s+/.test(match)) for white spaces
    return index === 0 ? match.toLowerCase() : match.toUpperCase();
  });
}

上面的代码片段是 StackOverflow 中投票最多的答案。但这也无法解决字符串为 ---Foo---bAr--- 的情况。

这就是字符串操作库可以派上用场的地方。它们可以轻松实现复杂的字符串操作,并且还可以考虑给定问题的所有可能用例。这对你有帮助,因为你只需要调用一个方法即可获得有效的解决方案。

让我们看看一些用于 JavaScript 的字符串操作库。

1、String.js

string.js或简称 S ,它是一个轻量级(文件< 5 kb )JavaScript 库,用于浏览器或 Node.js,提供额外的 String 方法。

安装

代码语言:javascript
复制
npm i string

值得注意的方法:

  • between(left, right) — 在左右字符串之间提取一个字符串。

这可以在尝试获取 HTML 中两个标签之间的元素时使用。

代码语言:javascript
复制
var S = require('string');
S('<a>This is a link</a>').between('<a>', '</a>').s 
// 'This is a link'
  • camelize() — 删除所有下划线或破折号,并将字符串转换为驼峰式大小写。

这个函数可以用来解决本文开头提到的问题。

代码语言:javascript
复制
var S = require('string');
S('---Foo---bAr---').camelize().s; 
//'fooBar'
  • humanize() — 将输入转换为人性化的形式。

这个从头开始实现的功能肯定需要相当多的代码行。

代码语言:javascript
复制
var S = require('string');
S('   capitalize dash-CamelCase_underscore trim  ').humanize().s //'Capitalize dash camel case underscore trim'
  • stripPunctuation() — 去除给定字符串中的所有标点符号。

如果你从头开始实现此功能,你很可能会错过标点符号。

代码语言:javascript
复制
var S = require('string');
S('My, st[ring] *full* of %punct)').stripPunctuation().s; 
//My string full of punct

2、Voca

Voca 是一个 JavaScript 字符串操作库。Voca 库中提供了 Change case、trim、pad、slugify、latinise、sprintf’y、truncate、escape 和其他有用的字符串操作方法。为了减少应用程序构建,模块化设计允许你加载完整的库或特定功能。

该库已经过全面测试,有据可查,并提供长期支持。

安装

代码语言:javascript
复制
npm i voca

值得注意的方法

  • Camel Case(字符串数据)

将数据转换为驼峰式大小写。

代码语言:javascript
复制
var v = require('voca');
v.camelCase('foo Bar');
// => 'fooBar'
v.camelCase('FooBar');
// => 'fooBar'
v.camelCase('---Foo---bAr---');
// => 'fooBar'
  • Latinise(字符串数据)

通过删除变音符号对数据进行Latinise。

代码语言:javascript
复制
var v = require('voca');
v.latinise('cafe\u0301'); // or 'café'
// => 'cafe'
v.latinise('août décembre');
// => 'aout decembre'
v.latinise('как прекрасен этот мир');
// => 'kak prekrasen etot mir'
  • isAlphaDigit(字符串数据)

检查数据是否仅包含字母和数字字符。(字母数字)

代码语言:javascript
复制
var v = require('voca');
v.isAlphaDigit('year2020');
// => true
v.isAlphaDigit('1448');
// => true
v.isAlphaDigit('40-20');
// => false
  • CountWords(字符串数据)

计算数据中的字数。

代码语言:javascript
复制
var v = require('voca');
v.countWords('gravity can cross dimensions');
// => 4
v.countWords('GravityCanCrossDimensions');
// => 4
v.countWords('Gravity - can cross dimensions!');
// => 4
  • EscapeRegExp(字符串数据)

转义正则表达式特殊字符 - [ ] / { } ( ) * + ? . \ ^ $ | 在数据中。

代码语言:javascript
复制
var v = require('voca');
v.escapeRegExp('(hours)[minutes]{seconds}');
// => '\(hours\)\[minutes\]\{seconds\}'

更多内容地址:https://vocajs.com。

3、Anchorme.js

这是一个小巧、快速的 Javascript 库,可帮助检测文本中的链接 / URL / 电子邮件并将它们转换为可点击的 HTML 锚链接。

它高度敏感,误报最少。

它根据完整的 IANA 列表验证 URL 和电子邮件。

验证端口号(如果存在)。

验证 IP 八位字节数(如果存在)。

适用于非拉丁字母 URL。

安装

代码语言:javascript
复制
npm i anchorme

用法

代码语言:javascript
复制
import anchorme from "anchorme"; 
//or 
//var anchorme = require("anchorme").default;
const input = "some text with a link.com"; 
const resultA = anchorme(input);
//some text with a <a href="http://link.com">link.com</a>

你可以传入其他扩展以进一步自定义该功能。

4、Underscore.string

Underscore.string 是 JavaScript 的字符串操作扩展,你可以使用或不使用 Underscore.js。Underscore.string 是一个 JavaScript 库,用于轻松处理字符串,是受 Prototype.js、Right.js 和 Underscore 启发的 Underscore.js 扩展。

Underscore.string 为你提供了几个有用的功能:capitalize、clean、includes、count、escapeHTML、unescapeHTML、insert、splice、startsWith、endsWith、titleize、trim、truncate 等等。

安装

代码语言:javascript
复制
npm install underscore.string

值得注意的方法

  • numberFormat(number) — 格式化数字

将数字格式化为带有十进制和顺序分隔的字符串。

代码语言:javascript
复制
var _ = require("underscore.string");
_.numberFormat(1000, 3)
=> "1,000.000"
_.numberFormat(123456789.123, 5, '.', ',');
=> "123,456,789.12300"
  • levenshtein(string1,string2) — 计算两个字符串之间的 Levenshtein 距离。

在此处了解有关 levenshtein 距离算法的更多信息。

代码语言:javascript
复制
var _ = require("underscore.string");
_.levenshtein('kitten', 'kittah');
=> 2
  • chop(string, step) — 将给定的字符串切成小块。
代码语言:javascript
复制
var _ = require("underscore.string");
_.chop('whitespace', 3);
=> ['whi','tes','pac','e']

了解有关下划线字符串的更多信息地址:http://gabceb.github.io/underscore.string.site/#chop

5、Stringz

这个库的主要亮点是它是 unicode 感知的。如果你运行下面的代码,输出将为 2。

代码语言:javascript
复制
"🤔".length
// -> 2

这是因为 String.length() 返回字符串中的代码单元数,而不是字符数。实际上,在 010000–03FFFF 和 040000–10FFFF 范围内的某些字符每个代码点最多可以使用 4 个字节(32 位),但这不会改变答案:某些字符需要超过 2 个字节才能表示,因此它们需要1个以上的代码点。

阅读有关 JavaScript unicode 问题的更多信息地址:

https://mathiasbynens.be/notes/javascript-unicode

安装

代码语言:javascript
复制
npm install stringz

值得注意的方法

  • limit(字符串(string),limit,padString,padPosition)

将字符串限制为给定的宽度。

代码语言:javascript
复制
const stringz = require('stringz');
// Truncate:
stringz.limit('Life’s like a box of chocolates.', 20); 
// "Life's like a box of"
// Pad:
stringz.limit('Everybody loves emojis!', 26, '💩'); 
// "Everybody loves emojis!💩💩💩"
stringz.limit('What are you looking at?', 30, '+', 'left'); 
// "++++++What are you looking at?"
// Unicode Aware:
stringz.limit('🤔🤔🤔', 2); 
// "🤔🤔"
stringz.limit('👍🏽👍🏽', 4, '👍🏽'); 
// "👍🏽👍🏽👍🏽👍🏽"
  • toArray(字符串)

将字符串转换为数组

代码语言:javascript
复制
const stringz = require('stringz');
stringz.toArray('abc');
// ['a','b','c']
//Unicode aware
stringz.toArray('👍🏽🍆🌮');
// ['👍🏽', '🍆', '🌮']

最后

感谢你的阅读,如果你有任何问题,欢迎在留言区告诉我。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端达人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档