覺得自己每次都忘記字串、陣列的處理方式,決定要來整理這些的用法。
>>>陣列的處理方式
總整理:
1.合併:+、+=、concat()
2.切割、擷取:
● 回傳陣列:split()-用分隔字找
● 回傳字串:substring()、slice()、substr()
3.找文字的index值:indexOf()、lastIndexOf()、search()
註:match()也可以index,但要看一下用法
4.用index值印文字:charAt()或直接str[0].str[1]…
5.算長度:string.length
6.轉換大小寫:toUpperCase()、toLowerCase()
註:也可以用charCodeAt()& String.fromCharCode()來判別英文字的大小寫並並轉換
7.取代:replace()
8.重複:repeat()
9.判斷字尾:endsWith()
split() (‘文字’)
使用指定的分隔字,將一個字串分割儲存於陣列中
let str = "嗨,大家,我的名字叫做紅茶"
let str2 = str.split(',')
let str3 = str.split('') //一個字一個字換成陣列console.log(str2) //[ '嗨', '大家', '我的名字叫做紅茶' ]
console.log(str3) //['嗨', ',', '大', '家', ',', '我', '的', '名', '字', '叫', '做', '紅', '茶']let str = "hi My name is blacktea"
let str2 = str.split(' ')
console.log(str2) //[ 'hi', 'My', 'name', 'is', 'blacktea' ]
substring() (起始位置 , 終止位置)
根據index擷取字串 (包含空格)
● 起始位置:必填,填 index
● 終止位置:選填,填 index
index大小無影響:substring(2,5)和substring(5,2)會返回同樣的字串
//參數有兩個
let str = "hi My name is blacktea"
let str2 = str.substring(0,6) //取1~5
console.log(str2) //'hi My'//參數前大後小
let str = "嗨,大家,我的名字叫做紅茶"
let str2 = str.substring(4,2) //取2~3
console.log(str2) //'大家'//參數只有一個
let str = "嗨,大家,我的名字叫做紅茶"
let str2 = str.substring(4) //從4取到最後
console.log(str2) //",我的名字叫做紅茶"
slice() (index) — -有點像從某個位置切下去的概念
根據index值,返回一個子字串
可填負值或正值,若填負值就會從後面開始算
//填入正值
let str = "hi My name is blacktea"
let str2 = str.slice (4)
console.log(str2) //'y name is blacktea'//填入負值
let str = "hi My name is blacktea"
let str2 = str.slice (-4)
console.log(str2) //'ktea'
substr() (起始位置, 長度)
返回一個從指定位置開始的子字串
● 起始位置:必填,填index
● 長度:選填,填數字,若沒填會直接取到最後,若填0則會返回空字串
//有填長度
let str = "hi My name is blacktea"
let str2 = str.substr (3,5)
console.log(str2) //'My na'//沒填長度
let str = "hi My name is blacktea"
let str2 = str.substr (3)
console.log(str2) //'My name is blacktea'
indexOf() (‘文字’,from)
第一個參數:找尋特定字符的index值,只會尋找第一個,若找不到會回傳-1
若找的是一個單字,則會回傳第一個字的index
第二個參數(選填):從哪個index找起
註:lastIndexOf() 是用來找特定字串的最後一個index
//尋找特定字的index
let str = "hi My name is blacktea"
let str2 = str.indexOf('a')
console.log(str2) // 7//找不到字的情況
let str = "hi My name is blacktea"
let str2 = str.indexOf('w')
console.log(str2) //-1//找單字
let str = "hi My name is blacktea"
let str2 = str.indexOf('My')
console.log(str2) // 3//從第九個index開始找起
let str = "hi My name is blacktea"
let str2 = str.indexOf('a',9)
console.log(str2) //16
search()
和indexOf()很像,可以找字符的index,差別在於可以使用正規表達式
找不到一樣會回傳-1
//未使用正規表表達式
let str = "hi My name is blacktea"
let str2 = str.search('a')
console.log(str2) // 7//有使用正規表達式,利用i表示不分大小寫
let str = "hi My name is blacktea"
let str2 = str.search(/m/i)
console.log(str2) // 3
利用 + 、 += 和 concat() 來合併字串
- 範例concat(str1,str2,str3)
//+
let str1 = "hi My nam"
let str2 = "e is blacktea"
let str3 = str1 + str2
console.log(str3) //"hi My name is blacktea"//+=
let str=''
for(let i = 0 ; i < 5; i++){
str += String(i) //把數字轉成字串
console.log(String(i)) //分別為0 1 2 3 4
}
console.log(str) //01234//concat()
let str1 = "hi My name"
let str2 = " is blacktea." //空格要自己加
let str3 = " I'm cute"
let all = str1.concat(str2 + str3)
console.log(all) //"hi My name is blacktea. I'm cute"
註:若是數字,就會直接相加
let str1 = 5
let str2 = 2
let str3 = str1 + str2
console.log(str3) // 7
charAt() (index值)
根據index值,取出那個index值的字符
let str = "hi My name is blacktea"
let str2 = str.charAt (3)
console.log(str2) //'M'
但最簡單的方法還是直接str[0].str[1]來取
let str1 = "hi My name is blacktea"
let str2 = str1[4]
console.log(str2) //'y'
利用length來算出字串長度
let str = "hi My name is blacktea"
console.log(str.length) // 22
replace() (被取代 , 取代者)
取代特定文字,只會取代第一個字
let str = "hi My name is blacktea"
let str2 = str.replace('hi','hello')
console.log(str2) //'hi My name is blacktea'let str = "hi My name is blacktea"
let str2 = str.replace('a','-')
console.log(str2) //'hi My n-me is blacktea'
如果要取代所有的特定文字,要用正規表達式
let str = "hi My name is blacktea"
let str2 = str.replace(/a/g,'-') //這裡的g表示要拿所有的a
console.log(str2) //'hi My n-me is bl-ckte-'
toUpperCase() / toLowerCase()
轉換成全部大寫或全部小寫
let str = "Hi My name is blacktea"
let upper = str.toUpperCase()
let lower = str.toLowerCase()
console.log(upper) //'HI MY NAME IS BLACKTEA'
console.log(lower) //'hi my name is blacktea'
match()
找尋特定字串的資訊,回傳陣列,通常會搭配正規表達式
若找不到會回傳null
let str = "hi My name is blacktea"
let str2 = str.match('na')
console.log(str2)
//[ 'na', index: 6, input: 'hi My name is blacktea', groups: undefined ]let str = "hi My name is blacktea"
let str2 = str.match(/is/) // === str.match('is')
console.log(str2)
//[ 'is', index: 11, input: 'hi My name is blacktea', groups: undefined ]let str = "hi My name is blacktea"
let str2 = str.match(/is/g)
console.log(str2)
//[ 'is' ]let str = "hi My name is blacktea"
let str2 = str.match(/t/g)
console.log(str2)
//[ 'a', 'a', 'a' ]
charCodeAt() & String.fromCharCode()
charCodeAt():可以取得字串特定位置的Unicode編碼
String.fromCharCode():利用Unicode編碼取得對應的字元
let str = "hi My name is blacktea"
str.charCodeAt(0) //104 h的Unicode編碼是104
str.charCodeAt(4) //121 M的Unicode編碼是121console.log(String.fromCharCode(97)) //a
根據Unicode,A~Z的編碼是65~90,a~z是97~122
A和a的編碼差距32,也就是說,如果要轉換大小寫
可以讓a的編碼減掉32,就可以變成A
let str = "abcd"
let upper =''for(let i = 0; i < str.length; i++){
console.log(str.charCodeAt(i)) //97 98 99 100
upper+=String.fromCharCode(str.charCodeAt(i)-32)
console.log(upper) //ABCD
}
換句話說,我們也可以用字元編碼來判定小寫與大寫
let str = 'a'
if(str.charCodeAt(0)>=97 && str.charCodeAt(0)<=122){
console.log('這是小寫')
}else{
console.log('這不是小寫')
}
//結果:這是小寫
有另外一種方式也可以判別大小寫,這裡是用字典順序來判定
let str = 'a'
if(str[0]>='a' && str[0]<='z'){
console.log('這是小寫')
}else{
console.log('這不是小寫')
}
//結果:這是小寫
repeat() (count)
括號內填入要重複的次數,不會改變原陣列 如果填入的數字不是整數,會直接進位變成整數
let str = 'abc'
let str2 = str.repeat(3)
let str3 = str.repeat(3.00001)
console.log(str) //'abc'
console.log(str2) //'abcabcabc'
console.log(str3) //'abcabcabc'
endsWith() (‘文字’, 擷取的長度)
判斷字串的最後是否有包含特定詞,會回傳布林值
第一個參數:必填
第二個參數:選填,預設值是整個字串的長度,假設這裡填19,就會擷取0–18 index的字串,來判定這個0–18的字串最後有沒有特定詞
let str = "hi My name is blacktea"
console.log(str.endsWith('tea')) //true
console.log(str.endsWith('My')) //false
console.log(str.endsWith('My',4)) //false
console.log(str.endsWith('My',5)) //true