day07-字符串操作

ES5/String

嚴格模式(了解)

  • 我們都知道 js 是一個相對不很嚴謹?shù)恼Z言
  • 而且開發(fā)的時候泌枪,一些代碼也不是很嚴格要求
  • 而嚴格模式就是對開發(fā)的時候寫的一些內容做了要求

開啟嚴格模式

  • 想開啟嚴格模式吞加,直接在代碼最開始的位置寫上字符串 use strict

    <script>
      'use strtic'
      // 下面代碼書寫就要按照嚴格模式來書寫
    </script>
    

嚴格模式的規(guī)則

  1. 聲明變量必須有 var 關鍵字

    'use strtic'
    
    var num = 100
    num2 = 200 // 這個就會報錯
    
    • 之前了解過弛槐,在聲明變量的時候茎截,如果沒有 var 關鍵字知牌,那么按照作用域的規(guī)則會自動定義成全局變量
    • 嚴格模式下不可以,會報錯
  2. 函數(shù)的行參不可以重復

    'use strtic'
    
    function fn(p1, p1) {} // 直接就會報錯
    
    • 在非嚴格模式下站超,函數(shù)兩個行參一樣荸恕,是不會報錯的,只不過就是相當于在函數(shù)內部只有一個變量了
    • 但是在嚴格模式下會報錯
  3. 聲明式函數(shù)調用的時候函數(shù)內部沒有 this

    'use strtic'
    
    function fn() {
      console.log(this) // undefined
    }
    fn()
    
    • 本身死相,全局聲明式函數(shù)在調用的時候融求,函數(shù)內部的 this 是指向 window
    • 在嚴格模式下,是沒有 this

ES5 中常見的數(shù)組常用方法

  • 之前我們講過的數(shù)組常用方法都是 ES3 的方法
  • 今天來說一些 ES5 中的方法

indexOf

  • indexOf 用來找到數(shù)組中某一項的索引

  • 語法: indexOf(你要找的數(shù)組中的項)

    var arr = [1, 2, 3, 4, 5]
    
    // 使用 indexOf 找數(shù)組中的某一項
    var index = arr.indexOf(3)
    
    console.log(index) // 2
    
    • 我們要找的是數(shù)組中值為 3 的那一項
    • 返回的就是值為 3 的那一項在該數(shù)組中的索引
  • 如果你要找的內容在數(shù)組中沒有算撮,那么就會返回 -1

    var arr = [1, 2, 3, 4, 5]
    
    // 使用 indexOf 超找數(shù)組中的某一項
    var index = arr.indexOf(10)
    
    console.log(index) // -1
    
    • 你要找的值在數(shù)組中不存在双肤,那么就會返回 -1

forEach

  • for 循環(huán)一個作用,就是用來遍歷數(shù)組的

  • 語法:arr.forEach(function (item, index, arr) {})

    var arr = [1, 2, 3]
    
    // 使用 forEach 遍歷數(shù)組
    arr.forEach(function (item, index, arr) {
      // item 就是數(shù)組中的每一項
      // index 就是數(shù)組的索引
      // arr 就是原始數(shù)組
      console.log('數(shù)組的第 ' + index + ' 項的值是 ' + item + '钮惠,原始數(shù)組是', arr)
    })
    
    • forEach() 的時候傳遞的那個函數(shù)茅糜,會根據(jù)數(shù)組的長度執(zhí)行
    • 數(shù)組的長度是多少,這個函數(shù)就會執(zhí)行多少回

map

  • forEach 類似素挽,只不過可以對數(shù)組中的每一項進行操作蔑赘,返回一個新的數(shù)組

    var arr = [1, 2, 3]
    
    // 使用 map 遍歷數(shù)組
    var newArr = arr.map(function (item, index, arr) {
      // item 就是數(shù)組中的每一項
      // index 就是數(shù)組的索引
      // arr 就是原始數(shù)組
      return item + 10
    })
    
    console.log(newArr) // [11, 12, 13]
    

filter

  • map 的使用方式類似,按照我們的條件來篩選數(shù)組

  • 把原始數(shù)組中滿足條件的篩選出來,組成一個新的數(shù)組返回

    var arr = [1, 2, 3]
    
    // 使用 filter 過濾數(shù)組
    var newArr = arr.filter(function (item, index, arr) {
      // item 就是數(shù)組中的每一項
      // index 就是數(shù)組的索引
      // arr 就是原始數(shù)組
      return item > 1
    })
    
    console.log(newArr) // [2, 3]
    
    • 我們設置的條件就是 > 1
    • 返回的新數(shù)組就會是原始數(shù)組中所有 > 1 的項

創(chuàng)建字符串(了解)

  • 我們創(chuàng)建字符串也分為兩種方法 字面量構造函數(shù)

  • 字面量:

    var str = 'hello'
    
  • 構造函數(shù)創(chuàng)建

    var str = new String('hello')
    

ASCII 字符集(了解)

  • 我們都知道缩赛,計算機只能存儲 0101010 這樣的二進制數(shù)字
  • 那么我們的 a ~ z / A ~ Z / $ / @ /… 之類的內容也有由二進制數(shù)字組成的
  • 我們可以簡單的理解為耙箍, a ~ z / A ~ Z / $ / @ /… 之類的內容都有一個自己的編號,然后在計算機存儲的時候酥馍,是存儲的這些編號辩昆,我們看的時候,也是通過這些編號在解析成我們要看到的內容給我們看到
  • 上面的就是 ASCII 對照表旨袒,我們只需要知道他是這么存儲的就好

unicode 編碼

  • 我們看到了汁针,ASCII 只有這 128 個字符的編碼結構
  • 但是因為 ASCII 出現(xiàn)的比較早,而且是美國發(fā)明的砚尽,早先時候這些內容就夠用了
  • 因為存儲一些英文的內容施无,傳遞一些英文的文章什么的都夠用了
  • 那么對于這個世界來說肯定是不夠用的
  • 因為我們的漢字沒有辦法存儲,包括一些其他國家的語言也沒有辦法存儲
  • 所以就出現(xiàn)了 unicode 編碼必孤,也叫(萬國碼猾骡,統(tǒng)一碼)
  • unicode 對照表就是一個和 ASCII 一樣的對照表,只不過變得很大很大敷搪,因為存儲的內容特別的多
  • 而且包含了世界上大部分國家的文字兴想,所以我們的文字和字符現(xiàn)在在存儲的時候,都是按照 unicode 編碼轉換成數(shù)字進行存儲
  • 我們的 UTF-8 就是一種 8 位的 unicode 字符集

字符串的常用方法

  • 我們操作字符串赡勘,也有一堆的方法來幫助我們操作
  • 字符串和數(shù)組有一個一樣的地方嫂便,也是按照索引來排列的

charAt

  • charAt(索引) 是找到字符串中指定索引位置的內容返回

    var str = 'Jack'
    
    // 使用 charAt 找到字符串中的某一個內容
    var index = str.charAt(2)
    
    console.log(index) // c
    
    • 因為字符串也是按照索引進行排列的,也是同樣從 0 開始
    • 所以索引 2 的位置就是 c
  • 如果沒有對應的索引狮含,那么就會返回 空字符串

    var str = 'Jack'
    
    // 使用 charAt 找到字符串中的某一個內容
    var index = str.charAt(10)
    
    console.log(index) // ''
    
    • 這個字符串根本沒有索引 10 的位置
    • 所以就會返回一個空字符串 ''

charCodeAt

  • charCodeAt(索引) 就是返回對應索引位置的 unicode 編碼

    var str = 'Jack'
    
    // 使用 charAt 找到字符串中的某一個內容
    var index = str.charCodeAt(0)
    
    console.log(index) // 74
    
    • 因為 Junicode 對照表里面存儲的是 74,所以就會返回 74

indexOf

  • indexOf 就是按照字符找到對應的索引

    var str = 'Jack'
    
    // 使用 indexOf 找到對應的索引
    var index = str.indexOf('J')
    
    console.log(index) // 0
    
    • 因為字符 J 在字符串 Jack 中的索引位置是 0
    • 所以會返回 0

substring

  • substring 是用來截取字符串使用的

  • 語法: substring(從哪個索引開始曼振,到哪個索引截止)几迄,包含開始索引,不包含結束索引

    var str = 'hello'
    //         01234
    
    // 使用 substring 截取字符串
    var newStr = str.substring(1, 3)
    
    console.log(newStr) // el
    
    • 從索引 1 開始冰评,到索引 3 截止映胁,包含前面的索引不包含后面的索引
    • 所以返回的是 el

substr

  • substr 也是用來截取字符串的

  • 語法:substr(從哪個索引開始,截取多少個)

    var str = 'hello'
    //         01234
    
    // 使用 substr 截取字符串
    var newStr = str.substr(1, 3)
    
    console.log(newStr) // ell
    
    • 這個方法和 substring 不一樣的是甲雅,第二個參數(shù)是截取多少個
    • 從索引 1 開始解孙,截取 3 個,所以得到的是 ell

toLowerCase 和 toUpperCase

  • 這兩個方法分別使用用來給字符串轉成 小寫字母大寫字母

    var str = hello
    
    // 使用 toUpperCase 轉換成大寫
    var upper = str.toUpperCase()
    
    console.log(upper) // HELLO
    
    // 使用 toLowerCase 轉換成小寫
    var lower = upper.toLowerCase()
    
    console.log(lower) // hello
    

強化練習

隨機生成一個五位以內的數(shù)抛人,然后輸出該數(shù)共有多少位弛姜,每位分別是什么

敏感詞過濾

// 比如我要過濾 "SM"

var str = 'asdasdSMasdasdasdSMsdasdasdSMsadasd'

// 需要結果
// asdasd**asdasdasd**sdasdasd**

數(shù)字字母混合驗證碼

已知字符串“a,a,b,c,c,d”汁政,統(tǒng)計每個字符出現(xiàn)的次數(shù)趴久,結果顯示 a 2、b 1塘辅、c 2、d1荠商,去掉重復的字符寂恬,使結果顯示 abcd

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市莱没,隨后出現(xiàn)的幾起案子初肉,更是在濱河造成了極大的恐慌,老刑警劉巖饰躲,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件牙咏,死亡現(xiàn)場離奇詭異,居然都是意外死亡属铁,警方通過查閱死者的電腦和手機眠寿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來焦蘑,“玉大人盯拱,你說我怎么就攤上這事±觯” “怎么了狡逢?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長拼卵。 經常有香客問我奢浑,道長,這世上最難降的妖魔是什么腋腮? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任雀彼,我火速辦了婚禮,結果婚禮上即寡,老公的妹妹穿的比我還像新娘徊哑。我一直安慰自己,他們只是感情好聪富,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布莺丑。 她就那樣靜靜地躺著,像睡著了一般墩蔓。 火紅的嫁衣襯著肌膚如雪梢莽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天奸披,我揣著相機與錄音昏名,去河邊找鬼。 笑死阵面,一個胖子當著我的面吹牛葡粒,可吹牛的內容都是我干的份殿。 我是一名探鬼主播,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼嗽交,長吁一口氣:“原來是場噩夢啊……” “哼卿嘲!你這毒婦竟也來了?” 一聲冷哼從身側響起夫壁,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤拾枣,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后盒让,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體梅肤,經...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年邑茄,在試婚紗的時候發(fā)現(xiàn)自己被綠了姨蝴。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡肺缕,死狀恐怖左医,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情同木,我是刑警寧澤浮梢,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站彤路,受9級特大地震影響秕硝,放射性物質發(fā)生泄漏。R本人自食惡果不足惜洲尊,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一远豺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧坞嘀,春花似錦躯护、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽唁盏。三九已至内狸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間厘擂,已是汗流浹背昆淡。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留刽严,地道東北人昂灵。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓避凝,卻偏偏與公主長得像,于是被迫代替她去往敵國和親眨补。 傳聞我的和親對象是個殘疾皇子管削,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359