5个用于处理字符串的JavaScript库

由于字符串涉及解决许多不同的问题,因此使用字符串可能很困难。例如,要将字符串简单地转换为骆驼样式,您需要几行代码:

function camelize(str) {
  return str.replace(/(?:^\w|[A-Z]|\b\w|\s+)/g, function(match, index) {
    if (+match === 0) re
turn ""; //  if (/\s+/.test(match))  
    return index === 0 ? match.toLowerCase() : match.toUpperCase();
  });
}

顺便说一下,这段代码作为将字符串带入“骆驼”风格问题的答案,在Stack Overflow上获得了最多的选票。但是,即使他也无法正确处理这样的行:

---Foo---bAr---


处理字符串的结果--- Foo --- bAr ---

但是如果仍然需要处理这些字符串怎么办?您可以修复此示例,也可以求助于专用库。它们简化了复杂算法的实现,并且为程序员提供了比上述示例更加灵活和通用的工具。这很可能意味着要解决某些困难的任务,您只需要调用一个方法即可。

让我们谈谈一些设计用于字符串的JavaScript库。

1. String.js


该库string.js(或简称S库)是一个小型(压缩和压缩后小于5 Kb)的JavaScript库,可以在浏览器和Node.js中使用。它为程序员提供了处理字符串的大量方法。这些是对象方法string.js,为方便起见,其中包括标准字符串方法。对象string.js是常规字符串的一种包装。

▍安装


要安装该库string.js,只需使用以下命令:

npm i string

methods值得注意的方法


方法间


该方法between(left, right)从字符串中提取行left之间包含的子字符串right例如,可以使用此方法在两个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'

Strip标点方法


该方法stripPunctuation()从字符串中删除标点符号和各种特殊字符,例如星号和方括号。如果您自己创建这样的函数,则很可能会忘记应处理的任何字符。

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

在这里您可以找到有关此库及其方法的更多详细信息。

2. Voca


JavaScript库Voca为我们提供了宝贵的功能,可增强字符串的可用性。其功能如下:

  • 更改字符大小写。
  • 删除时间轴开头和结尾处的指定字符。
  • 将字符串添加到给定的长度。
  • 将字符串转换为字符串,单词之间用连字符分隔。
  • 用拉丁字母写一个字符串。
  • 根据图案组装线。
  • 将字符串修剪到指定长度
  • 转义HTML的特殊字符。

库的模块化设计允许在必要时不加载整个库,而是加载单个功能。这使您可以使用此库优化应用程序包。库代码已经过全面测试,文档完善和维护良好。

▍安装


要安装,请Voca运行以下命令:

npm i voca

methods值得注意的方法


CamelCase方法


该方法camelCase()将传递给它的字符串转换为以“ camel”样式编写的字符串。

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

v.camelCase('FooBar');
// => 'fooBar'

v.camelCase('---Foo---bAr---');
// => 'fooBar'

拉丁化方法


该方法latinize()返回将传递给它的字符串转换为以拉丁字母书写的字符串的结果。

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方法


如果传递给它的字符串仅包含字母数字字符,则 该方法isAlphaDigit()返回true

var v = require('voca');
v.isAlphaDigit('year2020');
// => true

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

v.isAlphaDigit('40-20');
// => false

CountWords方法


该方法countWords()返回传递给它的字符串中的单词数。

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

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

v.countWords('Gravity - can cross dimensions!');
// => 4

EscapeRegExp方法


该方法escapeRegExp()基于传递给它的字符串返回一个字符串,在该字符串中转义了特殊字符。

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

→有关库的详细信息,请Voca参见此处

3. Anchorme.js


这是一个紧凑且快速的JavaScript库,用于查找文本中的URL和电子邮件地址并将其转换为有效的超链接。其主要特征如下:

  • 灵敏度高,假阳性率低。
  • 验证IANA完整列表中的链接和电子邮件地址。
  • 验证端口号(如果有)。
  • 验证IP地址(如果可用)。
  • 支持使用拉丁字符以外的字符编写的URL。

▍安装


要安装,请anchorme.js运行以下命令:

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>

可以使用带有参数的对象配置字符串处理,该参数可以传递给库。

→详细内容anchorme.js,可以发现这里

4. Underscore.string


underscore.stringunderscore.js用于处理字符串的扩展,可以与分开使用underscore.js该库受项目思想影响prototype.jsright.js并且underscore.js

该库为开发人员提供了许多用于处理字符串的有用功能。这里是其中的一些:

  • 大写();
  • 清洁();
  • 包括();
  • 数();
  • escapeHTML();
  • unescapeHTML();
  • 插 ();
  • 拼接();
  • 以。。开始 ();
  • 以。。结束 ();
  • 标题();
  • 修剪();
  • 截断()。

▍安装


您可以使用以下命令安装库:

npm i underscore.string

methods值得注意的方法


NumberFormat方法


该方法numberFormat()旨在格式化数字。

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

莱文施泰因法


该方法levenshtein()返回两行之间的Levenshtein距离。此处阅读有关此方法中使用的算法的更多信息

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

印章方法


该方法chop()将传递给它的字符串分成多个部分。

var _ = require("underscore.string");
_.chop('whitespace', 3);
// ['whi','tes','pac','e']

这是一个页面,您可以在其中找到有关库的详细信息underscore.string

5. Stringz


该库的主要功能stringz是可以使用Unicode字符。

如果在不使用任何库的情况下执行了以下代码,则表明字符串的长度为2。



问题是JS-string方法length()返回字符串的代码点数,而不是字符数。实际上,某些字符在范围内010000–03FFFF040000–10FFFF每个代码点最多可以使用4个字节(32位),但这不会改变答案:要表示某些字符,您需要两个以上的字节,因此它们由多个代码点表示。

这是有关在JavaScript中处理Unicode字符问题材料。

▍安装


要安装此库,您需要以下命令:

npm i stringz

methods值得注意的方法


极限法


该方法limit()将字符串强制转换为指定的长度。



ToArray方法


该方法toArray()将字符串转换为数组。



这是库存储库页面

,您使用哪些辅助工具来处理字符串?

我们提醒您,我们正在继续进行预测竞赛,您可以在其中赢得全新的iPhone。仍有时间进行深入分析,并对主题价值做出最准确的预测。


All Articles