5个JavaScript的字符串处理库

更新日期: 2020-03-12阅读: 1.6k标签: 

使用字符串可能是一项繁琐的任务,因为有许多不同的用例。例如,将字符串转换为驼峰大小写这样的简单任务可能需要几行代码才能达到最终目标。

function camelize(str) { 
  return str.replace(/(?:^\w|[A-Z]|\b\w|\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,是一个轻量级的JavaScript库(压缩后压缩后小于5kb),用于浏览器或提供额外String方法的Node.js。

(1) 安装:

npm i string 

(2) 值得注意的方法:

between(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' 

stripPunctuation() ——去掉给定字符串中的所有标点符号。如果你从头开始实现此功能,则很有可能会错过标点符号。

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

你可以在官方网站查看更多方法。


2. Voca

https://vocajs.com

Voca是一个用于处理字符串的JavaScript库。Voca库提供有用的函数来使字符串操作变得轻松自如:更改大小写,修饰,填充,弹化,拉丁化,sprintfy,截断,转义等等。模块化设计允许加载整个库或单个函数以最小化应用程序构建。该库已经过全面测试,有据可查,并得到长期支持。

(1) 安装

npm i voca 

(2) 值得注意的方法

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)——通过删除变音符号来对数据进行拉丁化处理。

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(String data)——检查数据是否仅包含字母和数字字符。 (字母数字)

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

CountWords(String 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)——转义在数据中的正则表达式特殊字符 -[] / {}()* +? 。 \ ^ $ | 。

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


3. Anchorme.js

https://alexcorvi.github.io/anchorme.js/

这是一个微型快速Javascript库,可帮助检测文本中的链接/ URL /电子邮件,并将其转换为可单击的HTML锚链接。

  • 它的灵敏度高,误报率最低。
  • 它根据完整的IANA列表验证URL和电子邮件。
  • 验证端口号(如果有)。
  • 验证IP八位字节号(如果存在)。
  • 适用于非拉丁字母URL。

(1) 安装

npm i anchorme 

(2) 使用

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

http://gabceb.github.io/underscore.string.site/

Underscore.string 是JavaScript的字符串操作扩展,可以与或不与Underscore.js一起使用。Underscore.string是一个JavaScript库,用于舒适地处理字符串,它是Prototype.js,Right.js和Underscore启发的Underscore.js扩展。

Underscore.string为你提供了几个有用的功能:大写、清除、包括、计数、escapeHTML、unescapeHTML、插入,拼接、startsWith、endsWith、标题化、修剪、截断等。

(1) 安装

npm install underscore.string 

(2) 值得注意的方法

numberFormat(number)——格式化数字。将数字格式化为带小数点和顺序分隔的字符串。

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

chop(string, step)——将给定的字符串切成小块。

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


5. Stringz

该库的主要亮点是它支持unicode。如果运行以下代码,则输出为2。

"".length 
// -> 2 

这是因为 String.length() 返回字符串中的代码单元数,而不是字符数。

(1) 安装

npm install stringz 

(2) 值得注意的方法

limit(string, limit, padString, padPosition)——将字符串限制为给定的宽度。

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

toArray(string)——将字符串转换为数组。

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

要了解有关Stringz的更多信息访问其Github。


链接: https://www.fly63.com/article/detial/8964

JavaScript 社区由一个库引发的“smoosh门”事件到底怎么回事?

一项名为 JavaScript 功能的提案 Array.prototype.flatten 证明与 Web 不兼容。在 Firefox Nightly 中发布该功能会导致至少一个受欢迎的网站中断。鉴于有问题的代码是广泛使用的 MooTools 库的一部分,很可能会有更多网站受到影响。

15个有趣的Javascript 和CSS库

让你了解到新兴和酷炫的web 开发趋势. 精心挑选发布一些认为大家值得关注的库:Direction Reveal、Carbon、Аxios、Jarvis、Toast UI Editor、Micron.js、lit

math.js_灵活强大的JavaScript数学库

math.js是一个广泛应用于JavaScript 和 Node.js的数学库,它的特点是灵活表达式解析器,支持符号计算,内置大量函数与常量,并提供集成解决方案来处理不同的数据类型,如数字,大数字,复数,分数,单位和矩阵。

12 个评估 JS 库你需要关心的事

当你调研一个 JS 库,功能当然是最重要的。作者给出了从 12 个角度全面分析 JS 库的可用性,分别是:特性,稳定性,性能,包生态,社区,学习曲线,文档,工具,发展历史,团队,兼容性,趋势

在使用新的JavaScript库时需要考虑的12件事

对于今年的JavaScript状态调查,我想深入挖掘一下,不仅知道人们正在使用哪些工具和库,还要为什么他们选择使用它们。这意味着我必须找到一种方法将个人偏好转化为冷酷的数据。

React Native 常用的 15 个库

本篇 React native 库列表不是从网上随便找的, 这些是我在我的应用中亲自使用的库。 这些库功能可能跟其它库也有,但经过大量研究并在我的程序中尝试后,我选择了这些库。

10个有趣的javascript和css库

我们的使命是让您了解最新和最酷的Web开发趋势。下面为大家分享10个有趣的javascript和css库:Tessaract.js强大的javascript(节点和浏览器)库,用于从图像中提取文本。

5个功能丰富的交互式Js库

在javascript的帮助下,可以为几乎每个领域(如移动、桌面应用程序和游戏Web开发)创建Web应用程序,因为该编程语言用作服务器端编程语言以实现最大功能,所以它是一种很好的编程语言。在本文中,我们选择了一些最佳的javascript库汇总

Js常用的动态效果库有那些?

当我想要在网上找一个简洁的 Javascript 动效库时,总是发现很多“推荐”的库都是缺乏持续维护的。经过一番研究,我收集了 11 个最好的库,你可以用在自己的项目中。另外我还添加了一些有用但是缺少持续维护的库

10 个实用的 Vue.js 工具和库

如今 Vue 的热度不断攀升,使用者越来越多,Vue.js 工具也随处可见。这种现象不是凭空产生的:Vue 的学习曲线友好,功能驱动的结构清晰易懂,文档出色易学,所以新人入门很容易,经验丰富的开发人员也可以快速从其他框架

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!