5个你不知道的JavaScript字符串处理库(小结)


Posted in Javascript onJune 01, 2020

处理大小写转换,删除字母符号,Unicode处理,URL处理等。

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

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----- 的情况。

5个你不知道的JavaScript字符串处理库(小结)

这是字符串处理库可以拯救的地方,它们使实现复杂的字符串操作变得容易,并且可以考虑给定问题的所有可能用例。这对你有帮助,因为你只需要调用一个方法即可获得有效的解决方案。

让我们看一些JavaScript的字符串处理库。

1. String.js

string.js,或者简称为 S,是一个轻量级的JavaScript库(压缩后压缩后小于5kb),用于浏览器或提供额外String方法的Node.js。

安装

npm i string

值得注意的方法

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

5个你不知道的JavaScript字符串处理库(小结)

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

安装

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

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

5个你不知道的JavaScript字符串处理库(小结)

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

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

安装

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" rel="external nofollow" >link.com</a>

你可以传入额外的扩展来进一步定制功能。

你可以在此处查看更多信息。

4. Underscore.string

5个你不知道的JavaScript字符串处理库(小结)

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

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

安装

npm install underscore.string

值得注意的方法

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() 返回字符串中的代码单元数,而不是字符数。

你可以在此处阅读有关JavaScript unicode问题的更多信息。

安装

npm install stringz

值得注意的方法

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。

来源:blog.bitsrc.io,作者:Mahdhi Rezvi,翻译:前端外文精选

到此这篇关于5个你不知道的JavaScript字符串处理库(小结)的文章就介绍到这了,更多相关JavaScript字符串处理库内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
图片自动更新(说明)
Oct 02 Javascript
用js实现计算加载页面所用的时间
Apr 02 Javascript
js字符串的各种格式的转换 ToString,Format
Aug 08 Javascript
jQuery function的正确书写方法
Aug 02 Javascript
JavaScript调试技巧之console.log()详解
Mar 19 Javascript
Jquery $.getJSON 在IE下的缓存问题解决方法
Oct 10 Javascript
node.js中的buffer.toString方法使用说明
Dec 14 Javascript
JavaScript实现的字符串replaceAll函数代码分享
Apr 02 Javascript
基于jQuery的checkbox全选问题分析
Nov 18 Javascript
Angularjs使用ng-repeat中$even和$odd属性的注意事项
Dec 31 Javascript
vue双向绑定数据限制长度的方法
Nov 04 Javascript
微信小程序如何实现radio单选框单击打勾和取消
Jan 21 Javascript
基于Vue sessionStorage实现保留搜索框搜索内容
Jun 01 #Javascript
微信小程序开发(一):服务器获取数据列表渲染操作示例
Jun 01 #Javascript
JavaScript forEach中return失效问题解决方案
Jun 01 #Javascript
原生JS封装拖动验证滑块的实现代码示例
Jun 01 #Javascript
jQuery cookie的公共方法封装和使用示例
Jun 01 #jQuery
webpack安装配置与常见使用过程详解(结合vue)
Jun 01 #Javascript
使用Vue+Django+Ant Design做一个留言评论模块的示例代码
Jun 01 #Javascript
You might like
木翼下载系统中说明的PHP安全配置方法
2007/06/16 PHP
PHP 图片上传代码
2011/09/13 PHP
PHP中如何实现常用邮箱的基本判断
2014/01/07 PHP
PHP中开启gzip压缩的2种方法
2015/01/31 PHP
javascript数组的扩展实现代码集合
2008/06/01 Javascript
跨域请求之jQuery的ajax jsonp的使用解惑
2011/10/09 Javascript
div+css+js实现无缝滚动类似marquee无缝滚动兼容firefox
2013/08/29 Javascript
JS鼠标滑过图片时切换图片实现思路
2013/09/12 Javascript
javascript验证上传文件的类型限制必须为某些格式
2013/11/14 Javascript
ES7中利用Await减少回调嵌套的方法详解
2017/11/01 Javascript
以v-model与promise两种方式实现vue弹窗组件
2018/05/21 Javascript
使用vue-cli(vue脚手架)快速搭建项目的方法
2018/05/21 Javascript
简单了解Ajax表单序列化的实现方法
2019/06/14 Javascript
微信小程序实现蒙版弹出窗功能
2019/09/17 Javascript
JavaScript实现好看的跟随彩色气泡效果
2020/02/06 Javascript
完美解决通过IP地址访问VUE项目的问题
2020/07/18 Javascript
vue 导出文件,携带请求头token操作
2020/09/10 Javascript
nuxt.js 在middleware(中间件)中实现路由鉴权操作
2020/11/06 Javascript
Python中装饰器高级用法详解
2017/12/25 Python
浅析Python 中几种字符串格式化方法及其比较
2019/07/02 Python
详解python解压压缩包的五种方法
2019/07/05 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
2019/09/18 Python
Python通过4种方式实现进程数据通信
2020/03/12 Python
python numpy实现rolling滚动案例
2020/06/08 Python
缅甸网上购物:Shop.com.mm
2017/12/05 全球购物
一道写SQL的面试题和答案
2013/11/19 面试题
.NET方向面试题
2014/11/20 面试题
社团成立邀请函
2014/01/08 职场文书
护士岗位求职应聘自荐书范文
2014/02/12 职场文书
大学生秋游活动方案
2014/02/17 职场文书
户外活动总结范文
2014/04/30 职场文书
餐厅保洁员岗位职责
2015/04/10 职场文书
大学生心理健康活动总结
2015/05/08 职场文书
婚宴主持词
2015/06/30 职场文书
女人创业励志语录,句句蕴含能量,激发你的潜能
2019/08/20 职场文书
Python基础 括号()[]{}的详解
2021/11/07 Python