英文 | https://blog.bitsrc.io/5-string-manipulation-libraries-for-javascript-9ca5da8b4eb8
翻译 | 杨小二
使用字符串可能是一项繁琐的任务,因为有许多不同的用例。例如,将字符串转换为驼峰式大小写这样的简单任务可能需要几行代码才能实现最终目标。
代码语言:javascript复制function camelize(str) {
return str.replace(/(?:^w|[A-Z]|bw|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('cafeu0301'); // 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) — 将给定的字符串切成小块。
var _ = require("underscore.string");
_.chop('whitespace', 3);
=> ['whi','tes','pac','e']
了解有关下划线字符串的更多信息地址:http://gabceb.github.io/underscore.string.site/#chop
5、Stringz
这个库的主要亮点是它是 unicode 感知的。如果你运行下面的代码,输出将为 2。
代码语言:javascript复制"