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 相关文章推荐
Draggable Elements 元素拖拽功能实现代码
Mar 30 Javascript
javascript删除数组元素并且数组长度减小的简单实例
Feb 14 Javascript
基于jquery插件编写countdown计时器
Jun 12 Javascript
jQuery用FormData实现文件上传的方法
Nov 21 Javascript
Angular企业级开发——MVC之控制器详解
Feb 20 Javascript
关于angular js_$watch监控属性和对象详解
Apr 24 Javascript
Vue 框架之键盘事件、健值修饰符、双向数据绑定
Nov 14 Javascript
快速对接payjq的个人微信支付接口过程解析
Aug 15 Javascript
浅析vue中的provide / inject 有什么用处
Nov 10 Javascript
JS动态图片的实现方法完整示例
Jan 13 Javascript
js实现单元格拖拽效果
Feb 10 Javascript
详细谈谈JavaScript中循环之间的差异
Aug 23 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
Mootools 1.2教程 函数
2009/09/15 Javascript
JavaScript 获取当前时间戳的代码
2010/08/05 Javascript
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
2011/02/26 Javascript
Jquery 绑定时间实现代码
2011/05/03 Javascript
jQuery实现简单的列表式导航菜单效果代码
2015/08/31 Javascript
基于JS判断iframe是否加载成功的方法(多种浏览器)
2016/05/13 Javascript
滚动条的监听与内容随着滚动条动态加载的实现
2017/02/08 Javascript
vue-axios使用详解
2017/05/10 Javascript
es6学习之解构时应该注意的点
2017/08/29 Javascript
vue2.0 computed 计算list循环后累加值的实例
2018/03/07 Javascript
Vue组件Draggable实现拖拽功能
2018/12/01 Javascript
javascript设计模式 ? 组合模式原理与应用实例分析
2020/04/14 Javascript
uni-app使用countdown插件实现倒计时
2020/11/01 Javascript
Python使用re模块正则提取字符串中括号内的内容示例
2018/06/01 Python
SELENIUM自动化模拟键盘快捷键操作实现解析
2019/10/28 Python
Python数据可视化:顶级绘图库plotly详解
2019/12/07 Python
python序列化与数据持久化实例详解
2019/12/20 Python
Python实现点云投影到平面显示
2020/01/18 Python
英国天然保健品网站:Simply Supplements
2017/03/22 全球购物
英国最大的在线亚洲杂货店:Red Rickshaw
2020/03/22 全球购物
广州御银科技股份有限公司试卷(C++)
2016/11/04 面试题
当我正在为表建立索引的时候,SQL Server 会禁止对表的访问吗
2014/04/28 面试题
介绍一下结构化程序设计方法和面向对象程序设计方法的区别
2012/06/27 面试题
vue路由实现登录拦截
2021/03/24 Vue.js
最新党员的自我评价分享
2013/11/04 职场文书
部队学习十八大感言
2014/01/11 职场文书
《一个中国孩子的呼声》教学反思
2014/02/12 职场文书
禁烟标语大全
2014/06/11 职场文书
幼儿园安全责任书范本
2014/07/24 职场文书
群众路线教育实践活动实施方案
2014/10/31 职场文书
风雨哈佛路观后感
2015/06/03 职场文书
2015小学毕业班工作总结
2015/07/21 职场文书
经典哲理警句:志不真则心不热,心不热则功不贤
2019/11/14 职场文书
iPhone13 Pro外观确定,升级4800万镜头,4月20日发新品
2021/04/15 数码科技
python中print格式化输出的问题
2021/04/16 Python
新手必备Python开发环境搭建教程
2021/05/28 Python