字符串的概述
字符串基礎數據類型屬于值類型,值類型是不可以改變的.字符串的方法是不能被改變的,只能創(chuàng)建一個新的字符串,字符串所有的方法都是創(chuàng)建一個新的字符串.字符串也是一個數據結構, 數據結構的類型叫串,那么他也具備增刪查改的方法.
字符串的申明創(chuàng)建
第一種
var str="hello";單引號和雙引號都是字符串
第二種?
var str=new String();使用new關鍵詞 會重新開辟一個空間
new String 和String 的區(qū)別
new String會重新開辟空間
String只會進行簡單的轉換,轉換的值在棧上
es6新增字符串模板屬性 ``? ?
使用``可以識別對應變量
對應需要識別的變量通過`${變量名}`
擴展內容
1TB = 1024GB
1GB = 1024 MB
1MB = 1024 KB
1KB = 1024B
1B = 8個位
數值在對應的計算機內占幾個字節(jié)
數值是占一個字節(jié) 英文字符一般占一個字節(jié) 中文字符一般占倆個字節(jié)(根據對應的編碼來的)
字符串的相關方法 (字符串永遠不會被改變,只能重新聲明一個新變量接收改變后的字符串)
查詢的方法
indexOf(從前到后)
lastIndexOf (從后往前)
search (從前到后 不支持指定對應的開始位置 支持正則表達式)
手寫源碼實現indexOf方法和lastIndexOf方法
indexOf實現
var str = 'abcdefgabcdef'
//indexOf會返回第一次找到的下標 (從前到后)
console.log(str.indexOf('abc')); //0
console.log(str.indexOf('abc',0)); //默認后面的參數不寫就是從下標0開始
//從下標4開始找 從前往后找
console.log(str.indexOf('abc',4)); //7
//從下標10開始查找 找不到返回-1
console.log(str.indexOf('abc',10)); //-1
//lastIndexOf 從后往前找
console.log(str.lastIndexOf('abc'));//7
console.log(str.lastIndexOf('abc',str.length-1));//字符串的length表示對應的長度 不寫
對應的后面的位置就是默認從最后一位開始
//指定從下標4開始 從后往前查找
console.log(str.lastIndexOf('abc',4));//0
//指定下標從1開始找 從后往前找 (可以包含后面的內容)
console.log(str.lastIndexOf('abc',1));//0
//search方法使用跟indexOf一樣 但是search支持正則表達式 以及search不能指定開始位置 都是從0
位置開始
//search (從前到后)
console.log(str.search('abc')); //0
//當前這個正則表示查找abc 全局查找g以及不區(qū)分大小寫i
var regx = /abc/gi
console.log(str.search('abc')); //0
console.log(str.search(regx)); //0
// indexOf從前往后查找
var currentStr = 'abcdefgabc'
console.log(currentStr[0]);//a
//傳遞的參數是匹配的字符串
function myIndexOf(str,start){
if(typeof start == 'undefined'){
start = 0
}
//遍歷當前的字符串 我們可以通過對應的下標來訪問對應的字符串
var index = -1
//遍歷當前的字符串lastIndexOf
根據下標返回對應的字符串
charAt(根據下標返回字符串)
charCodeAt (根據下標返回對應字符串的ascii碼)
for(var i = start;i<currentStr.length-str.length+1;i++){
//聲明一個字符串進行拼接比較
var targetStr = currentStr[i]
//拼接字符串
for(var j=1;j<str.length;j++){
targetStr += currentStr[i+j]
}
//進行比較
if(targetStr == str){
index = i
break
}
}
return index;
}
console.log(myIndexOf('abc',1));
// lastIndexOf 從后往前查找
//傳遞的參數是匹配的字符串
function myLastIndexOf(str, start) {
if (typeof start == 'undefined') {
start = currentStr.length - 1
}
//遍歷當前的字符串 我們可以通過對應的下標來訪問對應的字符串
var index = -1
//遍歷當前的字符串
for (var i = start; i >= 0; i--) {
//聲明一個字符串進行拼接比較
var targetStr = currentStr[i]
//拼接字符串
for(var j=1;j<str.length;j++){
targetStr += currentStr[i+j]
}
//進行比較
if (targetStr == str) {
index = i
break
}
}
return index;
}
console.log(myLastIndexOf('abc', 1));
// 字符串跟數組一樣可以直接通過下標來訪問對應的字符
var str = 'hello'
console.log(str[0]); //h 返回下標為1的字符
//根據下標獲取對應的字符串
//根據下標獲取對應的字符串的ascii碼 找不到返回NaN
console.log(str.charCodeAt(0));//返回h的ascii碼 104
var str = 'hello'
//傳入的參數 開始的下標 結束的下標(不包含結束位置)
var str1 = str.slice(1,3)
console.log(str1);//el
var str1 = str.slice()//截取全部
console.log(str1);//hello
var str1 = str.slice(1)//從下標1截取到末尾
console.log(str1);//ello
var str1 = str.slice(-1)//從下標length-1截取到末尾
console.log(str1);//o
var str = 'abcdefg'
//substring 必須具備開始位置(不支持負值) 結束位置可以寫可以不寫
var str1 = str.substring(1) //從下標截取到結尾
console.log(str1);//bcdefg
var str1 = str.substring(2,5) //從下標2截取到下標5
console.log(str1);//cde
//substr 截取 開始位置 個數
var str = 'abcdefg'
var str1 = str.substr(1)//從下標1開始截取到末尾
console.log(str1);//bcdefg
var str1 = str.substr(1,3)//從下標1開始截取3個
console.log(str1);//bcd
//連接方法concat 相當+
var str = 'hello'
var str1 = str.concat('world')
console.log(str1);split 分割
match 匹配
replace 替換
replace高階函數用法
其他的輔助方法
去除前后空格
trim
轉大小寫
var regx = /abc/gi
var str = 'abc,Abc,Ab'
//search 查找 根據正則查找對應的下標 找不到返回-1(類似于indexOf)(number)
var index = str.search(regx)
console.log(index);//0
//split 分割的方法 將對應的字符串分割成對應的數組 (
Array)
var str = 'abc,Abc,Ab'
var regx = /,/gi
var splitArray = str.split(regx)
console.log(splitArray);
//match 匹配的 將匹配的內容(如果沒有g沒有只匹配第一個填入)填充到對應的數組返回 (
Array)
var regx = /abc/gi
var str = 'abc,Abc,Ab'
var matchArray = str.match(regx)
console.log(matchArray);//如果是全局匹配將獲取所有匹配的 如果不是全局只會拿到第一次找到的
//replace 替換的方法 將對應的內容替換成某個內容然后返回 (String)
var regx = /abc/gi
var str = 'abc,Abc,Ab'
var newStr = str.replace(regx,'hello')//只會替換第一次找到的 (如果對應的正則里面有g那么
全部替換否則只替換第一次找到的)
console.log(newStr);//如果沒有全局 那么只會替換一次 有的話會全部替換
// 所有的方法里面以函數作為的參數的函數稱為高階函數
// replace其實是一個高階函數
var str = '你好世界'
var str1 = str.replace('好',function(value){//這個value其實就是你匹配的值
console.log(value);
return value+'壞' //返回的值其實就你用于替換的值
})
console.log(str1);//你好壞世界
// trim 去除前后空格
var str = ' a b '
var str1 = str.trim()
console.log(str1);toUpperCase
toLowerCase
靜態(tài)方法 將ascii碼轉為字符串(使用類名.對應的方法 調用 使用static進行修飾)
fromCharCode
跟html標簽相關的方法(不重要)
sub 下標
fontcolor
fontsize
//轉大寫
var str = 'abcABcd'
var str1 = str.toUpperCase()//轉大寫
console.log(str1);
//轉小寫
var str = 'abcABcd'
var str1 = str.toLowerCase()//轉小寫
console.log(str1);
//靜態(tài)方法 使用對應的類名直接點 使用static進行修飾的 fromCharCode
var newStr = String.fromCharCode(97,98,99) //將ascii碼變成字符串
console.log(newStr);//abc
//返回一個sub標簽
var str = 'hello'
var sub = str.sub()
console.log(sub);
//fontColor 返回一個font標簽指定對應的顏色
var tag = str.fontcolor('red')
console.log(tag);
//fontSize 返回一個font標簽指定對應的字體大小
var tag = str.fontsize(30)
console.log(tag);字符串去除前后空格的方法 trim
Math類
概述:Math類是用于數學運算的个从。他里面的屬性及相關的方法都是靜態(tài)的(方便調用)。
屬性 property:
PI 圓周率Π
E 科學計數法
方法 function:
Math.max 最大值
Math.min 最小值
Math.pow 冪次方
Math.sqrt 開平方
Math.ceil 向上取整 *
Math.floor 向下取整 *
Math.round 四舍五入 *
Math.random 取隨機數(0-1隨機數 包含0不包含1)*
Math.abs 取絕對值
總結
字符串是基礎值類型羡棵,不能被更改蟋字。
字符串的length屬性是只讀的阁谆,不能更改。
字符串的方法都是以返回一個新的字符串為基準愉老,原本字符串不會受影響场绿。
支持正則的方法4個 search ,match 嫉入,split焰盗,replace
字符串的截取方法 slice ,substring 咒林,substr
indexOf根據對應的字符串獲取對應的下標 charAt是根據下標來獲取對應的字符串熬拒。
字符串擁有通過下標訪問的特性,以及具備length屬性垫竞。
字符串轉大寫的方法 toUpperCase澎粟,toLowerCase
字符串去除前后空格的方法 trim