由于字符串涉及解决许多不同的问题,因此使用字符串可能很困难。例如,要将字符串简单地转换为骆驼样式,您需要几行代码:function camelize(str) {
return str.replace(/(?:^\w|[A-Z]|\b\w|\s+)/g, function(match, index) {
if (+match === 0) re
turn "";
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
骆驼化方法
该方法camelize()
从处理的字符串中删除空格,下划线,破折号,并将此字符串转换为“驼峰”样式。此方法可用于解决材料开头提到的问题。var S = require('string');
S('---Foo---bAr---').camelize().s;
人性化方法
该方法humanize()
将处理后的字符串转换为可读形式。如果必须从头开始执行类似的操作,则必须编写很多行代码。var S = require('string');
S(' capitalize dash-CamelCase_underscore trim ').humanize().s
Strip标点方法
该方法stripPunctuation()
从字符串中删除标点符号和各种特殊字符,例如星号和方括号。如果您自己创建这样的函数,则很可能会忘记应处理的任何字符。var S = require('string');
S('My, st[ring] *full* of %punct)').stripPunctuation().s;
→ 在这里您可以找到有关此库及其方法的更多详细信息。2. Voca
JavaScript库Voca
为我们提供了宝贵的功能,可增强字符串的可用性。其功能如下:- 更改字符大小写。
- 删除时间轴开头和结尾处的指定字符。
- 将字符串添加到给定的长度。
- 将字符串转换为字符串,单词之间用连字符分隔。
- 用拉丁字母写一个字符串。
- 根据图案组装线。
- 将字符串修剪到指定长度
- 转义HTML的特殊字符。
库的模块化设计允许在必要时不加载整个库,而是加载单个功能。这使您可以使用此库优化应用程序包。库代码已经过全面测试,文档完善和维护良好。▍安装
要安装,请Voca
运行以下命令:npm i voca
methods值得注意的方法
CamelCase方法
该方法camelCase()
将传递给它的字符串转换为以“ camel”样式编写的字符串。var v = require('voca');
v.camelCase('foo Bar');
v.camelCase('FooBar');
v.camelCase('---Foo---bAr---');
拉丁化方法
该方法latinize()
返回将传递给它的字符串转换为以拉丁字母书写的字符串的结果。var v = require('voca');
v.latinise('cafe\u0301');
v.latinise('août décembre');
v.latinise(' ');
IsAlphaDigit方法
如果传递给它的字符串仅包含字母数字字符,则
该方法isAlphaDigit()
返回true
。var v = require('voca');
v.isAlphaDigit('year2020');
v.isAlphaDigit('1448');
v.isAlphaDigit('40-20');
CountWords方法
该方法countWords()
返回传递给它的字符串中的单词数。var v = require('voca');
v.countWords('gravity can cross dimensions');
v.countWords('GravityCanCrossDimensions');
v.countWords('Gravity - can cross dimensions!');
EscapeRegExp方法
该方法escapeRegExp()
基于传递给它的字符串返回一个字符串,在该字符串中转义了特殊字符。var v = require('voca');
v.escapeRegExp('(hours)[minutes]{seconds}');
→有关库的详细信息,请Voca
参见此处3. Anchorme.js
这是一个紧凑且快速的JavaScript库,用于查找文本中的URL和电子邮件地址并将其转换为有效的超链接。其主要特征如下:- 灵敏度高,假阳性率低。
- 验证IANA完整列表中的链接和电子邮件地址。
- 验证端口号(如果有)。
- 验证IP地址(如果可用)。
- 支持使用拉丁字符以外的字符编写的URL。
▍安装
要安装,请anchorme.js
运行以下命令:npm i anchorme
▍使用
import anchorme from "anchorme";
const input = "some text with a link.com";
const resultA = anchorme(input);
可以使用带有参数的对象配置字符串处理,该参数可以传递给库。→详细内容anchorme.js
,可以发现这里4. Underscore.string
库underscore.string
是underscore.js
用于处理字符串的扩展,可以与分开使用underscore.js
。该库受项目思想影响prototype.js
,right.js
并且underscore.js
。该库为开发人员提供了许多用于处理字符串的有用功能。这里是其中的一些:- 大写();
- 清洁();
- 包括();
- 数();
- escapeHTML();
- unescapeHTML();
- 插 ();
- 拼接();
- 以。。开始 ();
- 以。。结束 ();
- 标题();
- 修剪();
- 截断()。
▍安装
您可以使用以下命令安装库:npm i underscore.string
methods值得注意的方法
NumberFormat方法
该方法numberFormat()
旨在格式化数字。var _ = require("underscore.string");
_.numberFormat(1000, 3)
_.numberFormat(123456789.123, 5, '.', ',');
莱文施泰因法
该方法levenshtein()
返回两行之间的Levenshtein距离。在此处阅读有关此方法中使用的算法的更多信息。var _ = require("underscore.string");
_.levenshtein('kitten', 'kittah');
印章方法
该方法chop()
将传递给它的字符串分成多个部分。var _ = require("underscore.string");
_.chop('whitespace', 3);
→ 这是一个页面,您可以在其中找到有关库的详细信息underscore.string
5. Stringz
该库的主要功能stringz
是可以使用Unicode字符。如果在不使用任何库的情况下执行了以下代码,则表明字符串的长度为2。
问题是JS-string方法length()
返回字符串的代码点数,而不是字符数。实际上,某些字符在范围内010000–03FFFF
,040000–10FFFF
每个代码点最多可以使用4个字节(32位),但这不会改变答案:要表示某些字符,您需要两个以上的字节,因此它们由多个代码点表示。→ 这是有关在JavaScript中处理Unicode字符问题的材料。▍安装
要安装此库,您需要以下命令:npm i stringz
methods值得注意的方法
极限法
该方法limit()
将字符串强制转换为指定的长度。
ToArray方法
该方法toArray()
将字符串转换为数组。
→ 这是库存储库页面,您使用哪些辅助工具来处理字符串?我们提醒您,我们正在继续进行预测竞赛,您可以在其中赢得全新的iPhone。仍有时间进行深入分析,并对主题价值做出最准确的预测。
