html判断输入字符串的数量_[译] 5 大 JavaScript 字符串操作库

c74194bc81e45321569e6485f0e96f3e.png
  • 原文地址: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 字符串操作库

22f347a1c7a0b818d5d97c26cb193c74.png

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

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--- 这样的字符串。

56ae3d9d989fb1dc1aac3f915c372c68.png

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

下面我们来看一些 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');
// => true

v.isAlphaDigit('1448');
// => true

v.isAlphaDigit('40-20');
// => false
  • CountWords(String data)

计算 data 中的单词数量。

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

v.countWords('GravityCanCrossDimensions');
// => 4

v.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、前端、后端、区块链、产品、设计、人工智能等领域,想要查看更多优质译文请持续关注 掘金翻译计划、官方微博、知乎专栏。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值