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 相关文章推荐
JSCode all of Brower 全局屏蔽网页右键功能 具体实现
Jun 05 Javascript
javascript实现的弹出层背景置灰-模拟(easyui dialog)
Dec 27 Javascript
js使用正则实现ReplaceAll全部替换的方法
Aug 22 Javascript
使用Chrome调试JavaScript的断点设置和调试技巧
Dec 16 Javascript
深入理解JavaScript的React框架的原理
Jul 02 Javascript
javascript验证手机号和实现星号(*)代替实例
Aug 16 Javascript
微信小程序开发教程-手势解锁实例
Jan 06 Javascript
vue.js多页面开发环境搭建过程
Apr 24 Javascript
微信小程序中显示倒计时代码实例
May 09 Javascript
在node环境下parse Smarty模板的使用示例代码
Nov 15 Javascript
javascript 设计模式之享元模式原理与应用详解
Apr 08 Javascript
javascript设计模式 ? 观察者模式原理与用法实例分析
Apr 22 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 mcrypt可逆加密算法分析
2011/07/19 PHP
php根据日期或时间戳获取星座信息和生肖等信息
2015/10/20 PHP
解析WordPress中的post_class与get_post_class函数
2016/01/04 PHP
php判断用户是否关注微信公众号
2016/07/22 PHP
php Session无效分析资料整理
2016/11/29 PHP
PHP中仿制 ecshop验证码实例
2017/01/06 PHP
理解Javascript_14_函数形式参数与arguments
2010/10/20 Javascript
JS、CSS加载中的小问题探讨
2013/11/26 Javascript
JavaScript利用正则表达式去除日期中的-
2014/06/09 Javascript
Ext GridPanel加载完数据后进行操作示例代码
2014/06/17 Javascript
jquery获取当前元素索引值用法实例
2015/06/10 Javascript
Bootstrap Table从服务器加载数据进行显示的实现方法
2016/09/29 Javascript
JS实现的简单表单验证功能示例
2017/10/13 Javascript
JavaScript数据结构之双向链表和双向循环链表的实现
2017/11/28 Javascript
微信小程序按钮点击跳转页面详解
2019/05/06 Javascript
微信小程序自定义toast组件的方法详解【含动画】
2019/05/11 Javascript
JS函数动态传递参数的方法分析【基于arguments对象】
2019/06/05 Javascript
[45:50]完美世界DOTA2联赛PWL S3 CPG vs Forest 第二场 12.16
2020/12/17 DOTA
python二进制文件的转译详解
2019/07/03 Python
Python FFT合成波形的实例
2019/12/04 Python
TensorFlow tf.nn.conv2d实现卷积的方式
2020/01/03 Python
python 使用递归回溯完美解决八皇后的问题
2020/02/26 Python
解决python 在for循环并且pop数组的时候会跳过某些元素的问题
2020/12/11 Python
Dr. Martens马汀博士官网:马丁靴始祖品牌
2016/10/15 全球购物
中国最大的潮流商品购物网站:YOHO!BUY有货
2017/01/07 全球购物
MADE荷兰:提供原创设计师家具
2018/04/03 全球购物
Osklen官方在线商店:巴西服装品牌
2019/04/25 全球购物
开发中都用到了那些设计模式?用在什么场合?
2014/08/21 面试题
介绍下WebSphere的安全性
2013/01/31 面试题
什么是GWT的Module
2013/01/20 面试题
高二化学教学反思
2014/01/30 职场文书
工作分析计划书
2014/04/30 职场文书
平安工地建设方案
2014/05/06 职场文书
践行三严三实心得体会
2014/10/13 职场文书
三孔导游词
2015/02/05 职场文书
2016年机关单位节能宣传周活动总结
2016/04/05 职场文书