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 相关文章推荐
filemanage功能中用到的common.js
Apr 08 Javascript
Javascript学习笔记9 prototype封装继承
Jan 11 Javascript
jquery连缀语法如何实现
Nov 29 Javascript
jQuery点击自身以外地方关闭弹出层的简单实例
Dec 24 Javascript
jquery+CSS3模拟Path2.0动画菜单效果代码
Aug 31 Javascript
使用jQuery制作Web页面遮罩层插件的实例教程
May 26 Javascript
jQuery Checkbox 全选 反选的简单实例
Nov 29 Javascript
浅谈js键盘事件全面控制
Dec 01 Javascript
JS正则获取HTML元素的方法
Mar 31 Javascript
详解性能更优越的小程序图片懒加载方式
Jul 18 Javascript
Windows下安装 node 的版本控制工具 nvm
Feb 06 Javascript
vue设置全局访问接口API地址操作
Aug 14 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 面向对象 final类与final方法
2010/05/05 PHP
使用Apache的htaccess防止图片被盗链的解决方法
2013/04/27 PHP
javascript入门·图片对象(无刷新变换图片)\滚动图像
2007/10/01 Javascript
一个cssQuery对象 javascript脚本实现代码
2009/07/21 Javascript
js跑马灯代码(自写)
2013/04/17 Javascript
js与jquery获取父元素,删除子元素的两种不同方法
2014/01/09 Javascript
javascript怎么禁用浏览器后退按钮
2014/03/27 Javascript
jQuery选择器源码解读(八):addCombinator函数
2015/03/31 Javascript
JavaScript实现模仿桌面窗口的方法
2015/07/18 Javascript
再JavaScript的jQuery库中编写动画效果的指南
2015/08/13 Javascript
jquery实现ajax加载超时提示的方法
2016/07/23 Javascript
利用prop-types第三方库对组件的props中的变量进行类型检测
2017/05/02 Javascript
IE浏览器下JS脚本提交表单后,不能自动提示问题解决方法
2019/06/04 Javascript
Vuex实现数据共享的方法
2019/12/20 Javascript
Python优化技巧之利用ctypes提高执行速度
2016/09/11 Python
Python tkinter事件高级用法实例
2018/01/31 Python
Django实现全文检索的方法(支持中文)
2018/05/14 Python
解决pyqt5中QToolButton无法使用的问题
2019/06/21 Python
Python 正则表达式 re.match/re.search/re.sub的使用解析
2019/07/22 Python
django 简单实现登录验证给你
2019/11/06 Python
你应该知道的Python3.6、3.7、3.8新特性小结
2020/05/12 Python
python基于exchange函数发送邮件过程详解
2020/11/06 Python
说出数据连接池的工作机制是什么?
2013/04/19 面试题
新闻专业应届生求职信
2013/10/31 职场文书
临床医学应届生求职信
2013/11/06 职场文书
室内设计专业个人的自我评价
2013/12/18 职场文书
企业党员一句话承诺
2014/05/30 职场文书
建筑施工安全生产责任书
2014/07/22 职场文书
励志演讲稿3分钟
2014/08/21 职场文书
学校查摆问题整改措施
2014/09/28 职场文书
党员批评与自我批评发言材料
2014/10/14 职场文书
先进典型发言材料
2014/12/30 职场文书
2015年机械设备管理工作总结
2015/05/04 职场文书
奔腾年代观后感
2015/06/09 职场文书
红领巾广播站广播稿
2015/08/19 职场文书
使用JS实现简易计算器
2021/06/14 Javascript