使用字符串可能是一项乏味的工作,因为有许多不同的用例。例如,一个简单的任务,例如将字符串转换为驼峰字母,可能需要几行代码才能实现最终目标,例如我们的示例:functioncamelize(str){returnstr.replace(/(?:^\w|[A-Z]|\b\w|\s+)/g,function(match,index){if(+match===0)return"";//orif(/\s+/.test(match))forwhitespacesreturnindex===0?match.toLowerCase():match.toUpperCase();});}上面的代码片段是StackOverflow中投票最多的答案。但这也不能解决字符串为---Foo---bAr---的情况。StackOverflow-演示编者注这就是字符串操作库的用武之地。字符串操作库可以轻松实现复杂的字符串操作,同时考虑到给定问题的所有可能用例。这对您很有帮助,因为您只需调用一种方法即可获得有效的解决方案。让我们来看看几个JavaScript字符串操作库:String.jsVocaStringzUnderscoreStringAnchorme1.String.js库是一个轻量级(大小小于5kb)的JavaScript库,用于浏览器或Node.js提供额外的String方法。安装npmistring值得注意的方法between(left,right)在左右字符串之间提取一个字符串。当尝试获取HTML中两个标记之间的元素时,可以使用此方法。varS=require('string');S('Thisalink').between('','').s//'Thisalink'camelize()删除任意下划线或破折号,并将字符串转换为驼峰式大小写。这个函数可以用来解决本文开头提到的问题。varS=require('string');S('---Foo---bAr---').camelize().s;//'fooBar'humanize()将输入转换为人类友好的形式。从头开始实现此功能当然需要相当多的代码行。varS=require('string');S('capitalizedash-CamelCase_underscoretrim').humanize().s//'Capitalizedashcamelcaseunderscoretrim'stripPunctuation()去除给定字符串中的所有标点符号。如果您从头开始实施,您很可能会漏掉一个标点符号。varS=require('string');S('My,st[ring]*full*of%punct)').stripPunctuation().s;//Mystringfullofpunct的更多方法参考以下链接:https://github.com/jprichardson/string.js2.VocaVoca是一个JavaScript字符串操作库。Voca库中提供了更改大小写、修剪、填充、美化、截断、转义和其他有用的字符串操作的方法。为了减少应用程序构建,模块化设计允许您加载完整的库或特定功能。该库经过全面测试,文档齐全,并提供长期支持。安装npmivoca值得关注的方法CamelCase(Stringdata)将数据转换为驼峰大小写。varv=require('voca');v.camelCase('fooBar');//=>'fooBar'v.camelCase('FooBar');//=>'fooBar'v.camelCase('---Foo---bAr---');//=>'fooBar'Latinise(Stringdata)通过移除变音符号来拉丁化数据。varv=require('voca');v.latinise('cafe\u0301');//或'café'//=>'cafe'v.latinise('ao?tdécembre');//=>'aoutdecembre'v.latinise('какпрекрасенэтотмир');//=>'kakprekrasenetotmir'isAlphaDigit(Stringdata)检查数据是否只包含字母和数字字符。(字母数字)varv=require('voca');v.isAlphaDigit('year2020');//=>truev.isAlphaDigit('1448');//=>truev.isAlphaDigit('40-20');//=>falseCountWords(Stringdata)计算数据中的单词个数:varv=require('voca');v.countWords('gravitycancrossdimensions');//=>4v.countWords('GravityCanCrossDimensions');//=>4v.countWords('Gravity-cancrossdimensions!');//=>4更多方法参考以下链接:https://vocajs.com/#3。Anchorme.js这是一个小巧、快速的Javascript库,有助于检测文本URL或电子邮件中的链接,并将它们转换为可点击的HTML锚链接。它有几个优点:灵敏度高,误报率最低。它根据完整的IANA列表验证URL和电子邮件。验证端口号(如果存在)。验证IP八位字节(如果存在)。适用于非拉丁字母的URL。使用方法importanchormefrom"anchorme"安装npmivoca;//或//varanchorme=require("anchorme").default;constinput="sometextwithalink.com";/link.com">link.com您可以传入额外的扩展来进一步自定义此功能。4.UnderscoreStringUnderscore是一个JavaScript字符串操作扩展,它为您提供了几个有用的功能:capitalize、clean、count、escapeHTML,unescapeHTML,insert,startsWith,endsWith,titleize,truncate,trim,andmore.Installnpminstallunderscore.stringNoteworthymethodnumberFormat(number)将数字格式化为带小数点和序号分隔符的字符串。var_=require("underscore.string");_.numberFormat(1000,3)=>"1,000.000"_.numberFormat(123456789.123,5,'.',',');=>"123,456,789.12300"chop(string,step)通过删除变音符号将数据拉丁化。varv=require('voca');v.latinise('cafe\u0301');//或'café'//=>'cafe'v.latinise('ao?tdécembre');//=>'aoutdecembre'v.latinise('какпрекрасенэтотмир');//=>'kakprekrasenetotmir'isAlphaDigit(Stringdata)将给定的字符串切成碎片var_=require("underscore.string");_.chop('whitespace',3);=>['whi','tes','pac','e']更多方法参考以下链接:http://gabceb.github.io/underscore.string.site/#chop5.主要亮点Stringz库的最大优点是它可以识别unicode。如果你运行下面的代码,输出将是2."🤔".length//->2至于为什么长度是2,你可以在这里阅读更多关于JavaScriptunicode代码问题。https://mathiasbynens.be/notes/javascript-unicodeinstallnpminstallstringz值得注意的方法limit(string,limit,padString,padPosition)将字符串限制为给定的宽度。conststringz=require('stringz');//Truncate:stringz.limit('Life'slikeaboxofchocolates.',20);//"Life'slikeaboxof"//Pad:stringz.limit('Everybodylovesemojis!',26,'💩');//"Everybodylovesemojis!💩💩💩"stringz.limit('Whatareyoulookingat?',30,'+','left');//"++++++你在看什么?"//UnicodeAware:stringz.limit('🤔🤔🤔',2);//"🤔🤔"stringz.limit('👍🏽👍🏽',4,'👍🏽');//"👍🏽👍🏽👍🏽👍🏽"toArray(string)将字符串转换为数组。conststringz=require('stringz');stringz.toArray('abc');//['a','b','c']//Unicodeawarestringz.toArray('👍🏽🏽🍆🌮');//['👍🏽','🍆','🌮']更多方法参考下方链接:https://github.com/sallar/stringz
