1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        5 個(gè) JavaScript 字符串操作庫(kù)

        共 5059字,需瀏覽 11分鐘

         ·

        2021-10-02 17:10

        英文 | https://blog.bitsrc.io/5-string-manipulation-libraries-for-javascript-9ca5da8b4eb8

        翻譯 | 楊小二


        使用字符串可能是一項(xiàng)繁瑣的任務(wù),因?yàn)橛性S多不同的用例。例如,將字符串轉(zhuǎn)換為駝峰式大小寫(xiě)這樣的簡(jiǎn)單任務(wù)可能需要幾行代碼才能實(shí)現(xiàn)最終目標(biāo)。
        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 中投票最多的答案。但這也無(wú)法解決字符串為 ---Foo---bAr--- 的情況。

        這就是字符串操作庫(kù)可以派上用場(chǎng)的地方。它們可以輕松實(shí)現(xiàn)復(fù)雜的字符串操作,并且還可以考慮給定問(wèn)題的所有可能用例。這對(duì)你有幫助,因?yàn)槟阒恍枰{(diào)用一個(gè)方法即可獲得有效的解決方案。

        讓我們看看一些用于 JavaScript 的字符串操作庫(kù)。

        1、String.js

        string.js或簡(jiǎn)稱(chēng) S ,它是一個(gè)輕量級(jí)(文件< 5 kb )JavaScript 庫(kù),用于瀏覽器或 Node.js,提供額外的 String 方法。

        安裝

        npm i string

        值得注意的方法:

        • between(left, right) — 在左右字符串之間提取一個(gè)字符串。

        這可以在嘗試獲取 HTML 中兩個(gè)標(biāo)簽之間的元素時(shí)使用。

        var S = require('string');S('<a>This is a link</a>').between('<a>', '</a>').s // 'This is a link'
        • camelize() — 刪除所有下劃線(xiàn)或破折號(hào),并將字符串轉(zhuǎn)換為駝峰式大小寫(xiě)。

        這個(gè)函數(shù)可以用來(lái)解決本文開(kāi)頭提到的問(wèn)題。

        var S = require('string');S('---Foo---bAr---').camelize().s; //'fooBar'
        • humanize() — 將輸入轉(zhuǎn)換為人性化的形式。

        這個(gè)從頭開(kāi)始實(shí)現(xiàn)的功能肯定需要相當(dāng)多的代碼行。

        var S = require('string');S('   capitalize dash-CamelCase_underscore trim  ').humanize().s //'Capitalize dash camel case underscore trim'
        • stripPunctuation() — 去除給定字符串中的所有標(biāo)點(diǎn)符號(hào)。

        如果你從頭開(kāi)始實(shí)現(xiàn)此功能,你很可能會(huì)錯(cuò)過(guò)標(biāo)點(diǎn)符號(hào)。

        var S = require('string');S('My, st[ring] *full* of %punct)').stripPunctuation().s; //My string full of punct

        2、Voca

        Voca 是一個(gè) JavaScript 字符串操作庫(kù)。Voca 庫(kù)中提供了 Change case、trim、pad、slugify、latinise、sprintf’y、truncate、escape 和其他有用的字符串操作方法。為了減少應(yīng)用程序構(gòu)建,模塊化設(shè)計(jì)允許你加載完整的庫(kù)或特定功能。

        該庫(kù)已經(jīng)過(guò)全面測(cè)試,有據(jù)可查,并提供長(zhǎng)期支持。

        安裝

        npm i voca

        值得注意的方法

        • Camel Case(字符串?dāng)?shù)據(jù))

        將數(shù)據(jù)轉(zhuǎn)換為駝峰式大小寫(xiě)。

        var v = require('voca');v.camelCase('foo Bar');// => 'fooBar'v.camelCase('FooBar');// => 'fooBar'v.camelCase('---Foo---bAr---');// => 'fooBar'
        • Latinise(字符串?dāng)?shù)據(jù))

        通過(guò)刪除變音符號(hào)對(duì)數(shù)據(jù)進(jìn)行Latinise

        var v = require('voca');v.latinise('cafe\u0301'); // or 'cafe?'// => 'cafe'v.latinise('ao?t décembre');// => 'aout decembre'v.latinise('как прекрасен этот мир');// => 'kak prekrasen etot mir'
        • isAlphaDigit(字符串?dāng)?shù)據(jù))

        檢查數(shù)據(jù)是否僅包含字母和數(shù)字字符。(字母數(shù)字)

        var v = require('voca');v.isAlphaDigit('year2020');// => truev.isAlphaDigit('1448');// => truev.isAlphaDigit('40-20');// => false
        • CountWords(字符串?dāng)?shù)據(jù))

        計(jì)算數(shù)據(jù)中的字?jǐn)?shù)。

        var v = require('voca');v.countWords('gravity can cross dimensions');// => 4v.countWords('GravityCanCrossDimensions');// => 4v.countWords('Gravity - can cross dimensions!');// => 4
        • EscapeRegExp(字符串?dāng)?shù)據(jù))

        轉(zhuǎn)義正則表達(dá)式特殊字符 - [ ] / { } ( ) * + ? . \ ^ $ | 在數(shù)據(jù)中。

        var v = require('voca');v.escapeRegExp('(hours)[minutes]{seconds}');// => '\(hours\)\[minutes\]\{seconds\}'

        更多內(nèi)容地址:https://vocajs.com。

        3、Anchorme.js

        這是一個(gè)小巧、快速的 Javascript 庫(kù),可幫助檢測(cè)文本中的鏈接 / URL / 電子郵件并將它們轉(zhuǎn)換為可點(diǎn)擊的 HTML 錨鏈接。

        它高度敏感,誤報(bào)最少。

        它根據(jù)完整的 IANA 列表驗(yàn)證 URL 和電子郵件。

        驗(yàn)證端口號(hào)(如果存在)。

        驗(yàn)證 IP 八位字節(jié)數(shù)(如果存在)。

        適用于非拉丁字母 URL。

        安裝

        npm i anchorme

        用法

        import anchorme from "anchorme"; //or //var anchorme = require("anchorme").default;const input = "some text with a link.com"; const resultA = anchorme(input);//some text with a <a >link.com</a>

        你可以傳入其他擴(kuò)展以進(jìn)一步自定義該功能。

        4、Underscore.string

        Underscore.string 是 JavaScript 的字符串操作擴(kuò)展,你可以使用或不使用 Underscore.js。Underscore.string 是一個(gè) JavaScript 庫(kù),用于輕松處理字符串,是受 Prototype.js、Right.js 和 Underscore 啟發(fā)的 Underscore.js 擴(kuò)展。

        Underscore.string 為你提供了幾個(gè)有用的功能:capitalize、clean、includes、count、escapeHTML、unescapeHTML、insert、splice、startsWith、endsWith、titleize、trim、truncate 等等。

        安裝

        npm install underscore.string

        值得注意的方法

        • numberFormat(number) — 格式化數(shù)字

        將數(shù)字格式化為帶有十進(jìn)制和順序分隔的字符串。

        var _ = require("underscore.string");_.numberFormat(1000, 3)=> "1,000.000"_.numberFormat(123456789.123, 5, '.', ',');=> "123,456,789.12300"
        • levenshtein(string1,string2) — 計(jì)算兩個(gè)字符串之間的 Levenshtein 距離。

        在此處了解有關(guān) levenshtein 距離算法的更多信息。

        var _ = require("underscore.string");_.levenshtein('kitten', 'kittah');=> 2
        • chop(string, step) — 將給定的字符串切成小塊。

        var _ = require("underscore.string");_.chop('whitespace', 3);=> ['whi','tes','pac','e']

        了解有關(guān)下劃線(xiàn)字符串的更多信息地址:http://gabceb.github.io/underscore.string.site/#chop

        5、Stringz

        這個(gè)庫(kù)的主要亮點(diǎn)是它是 unicode 感知的。如果你運(yùn)行下面的代碼,輸出將為 2。

        "??".length// -> 2

        這是因?yàn)?String.length() 返回字符串中的代碼單元數(shù),而不是字符數(shù)。實(shí)際上,在 010000–03FFFF 和 040000–10FFFF 范圍內(nèi)的某些字符每個(gè)代碼點(diǎn)最多可以使用 4 個(gè)字節(jié)(32 位),但這不會(huì)改變答案:某些字符需要超過(guò) 2 個(gè)字節(jié)才能表示,因此它們需要1個(gè)以上的代碼點(diǎn)。

        閱讀有關(guān) JavaScript unicode 問(wèn)題的更多信息地址:

        https://mathiasbynens.be/notes/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(字符串)

        將字符串轉(zhuǎn)換為數(shù)組

        const stringz = require('stringz');stringz.toArray('abc');// ['a','b','c']//Unicode awarestringz.toArray('????????');// ['????', '??', '??']

        最后

        感謝你的閱讀,如果你有任何問(wèn)題,歡迎在留言區(qū)告訴我。



        學(xué)習(xí)更多技能

        請(qǐng)點(diǎn)擊下方公眾號(hào)

        瀏覽 29
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            涩涩涩在线观看 | 欧美黑人又粗大 | 国产成人久久一区二区三区 | 亚洲 丝袜 国产 精品 91 | chinese偷拍一区二区三区 | 欧美另类色色 | 牛牛精品成人免费视频 | 久久伊人影院 | 色五月丁香影音先锋 | 李美淑三级理伦电影 |