• 原文地址:5 String Manipulation Libraries for JavaScript
  • 原文作者:Mahdhi Rezvi
  • 译文出自:掘金翻译计划
  • 本文永久链接:https://github.com/xitu/gold-miner/blob/master/article/2020/5-string-manipulation-libraries-for-javascript.md
  • 译者:IAMSHENSH
  • 校对者:Gesj-yean, CoolRice

5 大 JavaScript 字符串操作库

处理字符串可能是项繁琐的任务,因为会有许多不同的情况。例如,将字符串转化为驼峰格式这样的简单的任务,就可能需要几行代码才能实现。

function camelize(str) {return str.replace(/(?:^w|[A-Z]|bw|s+)/g, function(match, index) {if (+match === 0) return ""; // 或者对空格进行判断 if (/s+/.test(match))return index === 0 ? match.toLowerCase() : match.toUpperCase();});
}

上面的代码是 StackOverflow 中点赞最多的答案。但这也无法处理 ---Foo---bAr--- 这样的字符串。

这就是字符串处理库的存在价值。这些库会让字符串操作变得简单,并且对所有情况都考虑周全,而你只需要简单地调用一个方法。

下面我们来看一些 JavaScript 的字符串操作库。

1. String.js

string.js,或简称为 S,是一个轻量的(可压缩至 5kb 以下)JavaScript 库,为浏览器或 Node.js 提供额外的 String 方法。

安装

npm i string

有趣的方法

  • between(left, right) — 提取 leftright 之间的字符串。

这能获取两个 HTML 标签之间的元素。

var S = require('string');
S('<a>This is a link</a>').between('<a>', '</a>').s
// 'This is a link'

  • camelize() — 删除所有下划线或者连接符,并转化为驼峰格式。

此方法可解决本文开头提到的问题。

var S = require('string');
S('---Foo---bAr---').camelize().s;
//'fooBar'

  • humanize() — 将输入转换为人性化的形式。

从零开始实现此方法,肯定需要很多行代码。

var S = require('string');
S('   capitalize dash-CamelCase_underscore trim  ').humanize().s
//'Capitalize dash camel case underscore trim'

  • stripPunctuation() — 删除目标字符串的所有符号。

如果从零开始实现此方法,很大可能会漏掉某个符号。

var S = require('string');
S('My, st[ring] *full* of %punct)').stripPunctuation().s;
//My string full of punct

在这里查看更多的方法。

2. Voca

Voca 是一个处理字符串的 JavaScript 库。Voca 提供有用的方法来让你舒适地操作字符串:大小写转换、修剪、填充、Slugify、拉丁化、格式化、截短、转义等等。它的模块化设计允许你加载整个库,或者只加载某个方法,以构建最小化的应用。该库经过充分的测试拥有良好的文档并且提供长期的支持

安装

npm i voca

有趣的方法

  • Camel Case(String data)

将字符串数据转换为驼峰格式。

var v = require('voca');
v.camelCase('foo Bar');
// => 'fooBar'v.camelCase('FooBar');
// => 'fooBar'v.camelCase('---Foo---bAr---');
// => 'fooBar'

  • Latinise(String data)

通过删除变音字符,拉丁化 data

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(String data)

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

var v = require('voca');
v.isAlphaDigit('year2020');
// => truev.isAlphaDigit('1448');
// => truev.isAlphaDigit('40-20');
// => false

  • CountWords(String data)

计算 data 中的单词数量。

var v = require('voca');
v.countWords('gravity can cross dimensions');
// => 4v.countWords('GravityCanCrossDimensions');
// => 4v.countWords('Gravity - can cross dimensions!');
// => 4

  • EscapeRegExp(String data)

转义 data 中正则表达式的特殊字符 —— [ ] / { } ( ) * + ? . ^ $

var v = require('voca');
v.escapeRegExp('(hours)[minutes]{seconds}');
// => '(hours)[minutes]{seconds}'

在这里你可以查到更多的信息。

3. Anchorme.js

这是个轻量并快速的 Javascript 库,帮助我们检测文本中的链接、网址、电邮地址,并将它们转化为可点击的 HTML 锚点链接。

  • 高敏感,低误报。
  • 根据完整的 IANA 列表验证网址和电邮地址。
  • 验证端口号(如果有)。
  • 验证八位 IP 数字(如果有)。
  • 适用于非拉丁字母的地址。

安装

npm i anchorme

用法

import anchorme from "anchorme";
//或者
//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 受到 Prototype.js,Right.js 和 Underscore 启发,是一个能让你舒适操作字符串的 JavaScript 库。

Underscore.string 提供了一些有用的方法:首字母大写、清除、包含、计数、转义 HTML、反转义 HTML、插入、拼接、头部检查、尾部检查、标题化、修剪、截短等等。

安装

npm install underscore.string

有趣的方法

  • numberFormat(number) —— 格式化数字

将数字格式化为带小数点并按序分离的字符串。

var _ = require("underscore.string");_.numberFormat(1000, 3)
=> "1,000.000"_.numberFormat(123456789.123, 5, '.', ',');
=> "123,456,789.12300"

  • levenshtein(string1,string2) — 计算两个字符串之间的 Levenshtein。

在这里了解更多关于 Levenshtein 距离算法的信息。

var _ = require("underscore.string");_.levenshtein('kitten', 'kittah');
=> 2

  • chop(string, step) — 将字符串分块。
var _ = require("underscore.string");_.chop('whitespace', 3);
=> ['whi','tes','pac','e']

在这里了解更多关于 Underscore.String 的信息。

5. Stringz

该库的亮点是支持 Unicode(统一码、万国码、单一码)。如果运行以下代码,则输出为 2。

" ".length
// -> 2

这是因为 String.length() 返回的是字符串的字节数量,而非字符数量。实际上,在 010000–03FFFF040000–10FFFF 范围内的字符,每个需要使用 4 个字节(32 位),但这也改变不了答案:有些字符需要 2 个以上的字节来表示,因此,一个字符需要的字节数不止 1 个。

在这里可以关于 JavaScript Unicode 问题。

安装

npm install stringz

有趣的方法

  • limit(string, limit, padString, padPosition)

限制字符串长度。

const stringz = require('stringz');// 截短:
stringz.limit('Life’s like a box of chocolates.', 20);
// "Life's like a box of"// 填充:
stringz.limit('Everybody loves emojis!', 26, ' ');
// "Everybody loves emojis!   "
stringz.limit('What are you looking at?', 30, '+', 'left');
// "++++++What are you looking at?"// 支持 Unicode:
stringz.limit('   ', 2);
// "  "
stringz.limit('    ', 4, '  ');
// "        "

  • toArray(string)

将字符串转换为数组

const stringz = require('stringz');stringz.toArray('abc');
// ['a','b','c']// 支持 Unicode:
stringz.toArray('    ');
// ['  ', ' ', ' ']

在这里访问 Stringz 的 Github 了解更多


如果您有任何建议或意见,请在评论中告诉我。

相关资源: Stringjs Voca Stringz Underscore String Anchorme

如果发现译文存在错误或其他需要改进的地方,欢迎到 掘金翻译计划 对译文进行修改并 PR,也可获得相应奖励积分。文章开头的 本文永久链接 即为本文在 GitHub 上的 MarkDown 链接。


掘金翻译计划 是一个翻译优质互联网技术文章的社区,文章来源为 掘金 上的英文分享文章。内容覆盖 Android、iOS、前端、后端、区块链、产品、设计、人工智能等领域,想要查看更多优质译文请持续关注 掘金翻译计划、官方微博、知乎专栏。

js 包含某个字符串_[译] 5 大 JavaScript 字符串操作库相关推荐

  1. python 判断字符串是否包含另一个字符串_强烈推荐:Python字符串(string)方法整理(一)...

    作者:骏马金龙 原文地址: https://www.cnblogs.com/f-ck-need-u/p/9127699.html python中字符串对象提供了很多方法来操作字符串,功能相当丰富. p ...

  2. [转载] python 判断字符串是否包含另一个字符串_强烈推荐:Python字符串(string)方法整理(一)...

    参考链接: python中的字符串string center 作者:骏马金龙 原文地址: https://www.cnblogs.com/f-ck-need-u/p/9127699.html pyth ...

  3. java 补齐字符串_使用String.format()格式化字符串,java自动补全自增长字符串

    JDK1.5中,String类新增了一个很有用的静态方法String.format(): format(Locale l, String format, Object... args) 使用指定的语言 ...

  4. c int转字符串_【C++实现python字符串函数库】字符串匹配函数startswith与endswith

    [C++实现python字符串函数库]字符串匹配函数startswith与endswith 这两个函数用于匹配字符串的开头或末尾,判断是否包含另一个字符串,它们返回bool值.startswith() ...

  5. bootstrap table格式化字符串_你要的PHP字符串处理函数都在这了!

    php中文网最新课程 每日17点准时技术干货分享 打印输出函数 说明 echo 输出一个或多个字符串 print 输出字符串 printf 输出格式化字符串 sprintf Return a form ...

  6. python 文档字符串_新款Python文档字符串生成器来了

    又一款懒人神器问世了: Visual Studio Code的扩展,基于CodeBERT的Python文档字符串生成器. 看来现在,这群偷「懒」的程序员们连文档字符串都不想自己写了. 基于CodeBE ...

  7. Python练习题:如何将多个小字符串拼接成一个大的字符串

    功能:实现字符串拼接 1.迭代列表,连续使用'+'操作依次拼接每一个字符串: 方法一:直接相加 弊端:造成浪费: 原因:每进行一次迭代就会产生一个临时的字符串,用过以后就被解释器丢弃,这就意味着大量的 ...

  8. python输出数字和字符串_(一)1-5Python数字和字符串

    作业 一.数字数据类型用于存储数值.它们是不可变数据类型. a = 3.0 b = 2.5 c = 2.4 Python支持不同的数值类型 1.init(有符号整数) - 它们通常被称为整数或整数.它 ...

  9. java可变长字符串_具有可变长度的scala字符串插值

    scala> def format(n: Int)(i: Int) = | f"A%%0${n}d" format i format: (n: Int)(i: Int)Str ...

最新文章

  1. NSMutable属性声明时为什么不能使用copy
  2. JQuery中的样式操作
  3. ppp协议pap验证过程状态转移图_电脑网络知识:TCP协议的高级特性,你所不知道的TCP...
  4. Android 说说亮屏锁和键盘锁
  5. python访问带密码的共享文件夹_设置带密码和读写权限的共享文件夹 - Hakka
  6. YII框架截取字符串长度
  7. offset Dimensions 详解
  8. void main(){char str[] = “\tab\n\014\\\“;printf(“%d“,strlen(str))}
  9. 永久更改打开matlab时工作目录
  10. XShell免费版的安装配置教程以及使用教程(超级详细、保姆级)
  11. TextCNN(文本分类)
  12. as常用固定搭配_语法必看:as的几种固定用法
  13. Heka GeoIpDecoder 配置
  14. 在线教育行业和产品数据分析报告
  15. ffmpeg安装之linux编译安装
  16. ORACLE-SQL笔记
  17. 给图纸中的光栅对象、外部参照重命名
  18. 2018年推荐书单(140本)
  19. 二手书交易平台相关调研
  20. 遇到问题---tomcat启动报错--startup failed due to previous errors

热门文章

  1. Tomcat5.0与SqlServer2000配置连接池(jtds驱动)
  2. 深度学习目标检测(object detection)系列(一) R-CNN
  3. js DOM之基础详解
  4. 设置 HTTP HEADER 字段来提高 Web 安全性
  5. 《Java编程思想》第四版读书笔记 第十四章 类型信息
  6. Django静态文件一瞥
  7. Ubuntu Linux系统下apt-get命令详解
  8. 不同网段使用同一台网络打印机
  9. ubuntu 查看内存和cpu使用情况
  10. fckeditor的jsp中的使用