字串
字串
字串也是一個資料結構,將同樣的內容串在一塊,因為在對應的js里面字串屬于一個值型別(值型別是常量 常量是不能變),字串是不能改變的,結合資料結構里面串也是一個存盤結構,作為存盤結構增刪改查的方法(字串的增刪改查 不能針對于本身 而是回傳一個新的字串)
字串的宣告
1.值型別賦值
var str = "hello world"
2.以new關鍵詞宣告(參考了對應的值的地址)
var str = new String("abc"); //參考了空值的地址
ES6新增 字串模板
var a = 'jack' var str = `hello string ${a}` //esc下面的這個鍵 決議${} 以變數來決議 console.log(str); //hello string jack
new String() 和 String() 區別
-
new String是構建一個String物件 (參考資料型別 有地址指向的)
-
String 單純的將對應的傳進入的引數轉為string型別(值型別)
字串的屬性
length屬性 回傳字串的長度(包含空格及換行)
var str = 'a b' console.log(str.length)//3
通過下標來獲取對應的字串
var str = 'abc' console.log(str[0]) //a
字串的方法(回傳新的字串)
通過下標找字串(char 字符)
charAt(下標)
var str = 'abc' str.charAt(0) //回傳的是a
charCodeAt (ACSII碼)
var str = 'abc' str.charCodeAt(0) //回傳的是97
通過字串找下標(找不到回傳-1 找的到回傳對應的下標值 number(第一次出現的))
indexOf
var str = 'abc' console.log(str.indexOf('ab')) //回傳的下標0 console.log(str.indexOf('d')) //找不到回傳-1 //可以有倆個引數 第一個引數為 對應需要查詢的字串 第二個引數為 開始查找的下標 console.log(str.indexOf('b',2)) //從下標2開始找 找第一個出現b的位置 回傳-1 var str = 'abbbccde' console.log(str.indexOf('b',2)) //從下標2開始找 找第一個出現b的位置 2
lastIndexOf
console.log(str.lastIndexOf('b')) //3
console.log(str.lastIndexOf('b',0)) //-1 從0的位置往前找
console.log(str.lastIndexOf('b',4)) //3
//也就是說默認的情況下 對應的后面的下標可以省略 str.length-1
自定義函式實作對應的indexOf方法及對應的lastIndexOf方法
//實作一下對應的indexOf方法 var searchStr = "abcdefabcde" function indexOf(str,index){ if(!index){ //當前如果是undefined的值 index = 0 //默認為0 } //得到str的長度 var len = str.length //這個5是表示當前的字串的總長度 for(var i=index;i<searchStr.length-len;i++){ var s = '' for(var j=0;j<len;j++){ s+=searchStr[i+j] } if(s==str){ return i } } return -1 } function lastIndexOf(str,index){ if(!index && index!=0){ //當前如果是undefined的值 或者不為0 index = searchStr.length-1 //默認為最后一個 } //得到str的長度 var len = str.length //這個5是表示當前的字串的總長度 for(var i=index;i>=len;i--){ var s = '' for(var j=len-1;j>=0;j--){ s+=searchStr[i-j] } if(s==str){ return i } } return -1 }
search 方法(和indexOf一樣 支持正則運算式)
var str = 'abc' console.log(str.search(/ab/)) //0 /ab/正則運算式 console.log(str.search(/ab/,0)) //從0的位置開始找 匹配ab的內容
靜態方法(通過構造方法名直接呼叫的叫做靜態方法 他是對應的static修飾的)
fromCharCode 將對應的ascii碼轉為字串
var str = String.fromCharCode(97) //回傳的是一個字串 console.log(str) //a
concat 將多個字串轉為連接成一個字串回傳
var str = 'hello'.concat('world') console.log(str)//hello world
支持正則的方法(4個)
search 查找(找到回傳下標 沒找到回傳-1)
replace 替換 (將找到的第一個字串替換成一個新的字串)
var str = 'abca' var str1 = str.replace('a','hello')//將a替換成hello console.log(str1)
split 分割(回傳陣列)
//分割 成為一個陣列 split 陣列變成字串 join (默認以,) var str = '1,2,3' //默認不是以,作為分割 默認不分割 直接填入到陣列 console.log(str.split()); //['1,2,3'] console.log(str.split(',')); //['1','2','3']
match 匹配(回傳陣列)
//match 回傳一個陣列 (匹配的內容) var str = "abcacc" //默認只找第一個匹配的 加入到陣列 var arr = str.match('a') console.log(arr);
截取的方法
substring(開始的下標,結束的下標)
substr(開始的下標,個數)
//截取的方法 substring substr var str = "abcdef" //substring(開始的下標,結束的下標) 不包含結束的下標 console.log(str.substring(1));//bcdef console.log(str.substring(1,3));//截取不包含最后一個下標 (默認不填str.length)bc // substr(開始的下標,截取的個數) console.log(str.substr(1));//默認的情況是截取到最后 bcdef console.log(str.substr(1,3));//從下標1開始截取 截取個數為3個 bcd
轉大寫 (toUpperCase)
var str = 'abcA' console.log(str.toUpperCase())
轉小寫 (toLowercase)
var str = 'abcA' console.log(str.toLowerCase())
總結
-
string是不能改變的(常量)
-
string的方法回傳的都是一個新的字串
-
string的length屬性是只讀的(不能賦值)讀取對應的字串的長度
-
字串可以通過下標進行訪問(string[i])
-
字串方法 charAt charCodeAt
-
搜索 indexOf lastIndexOf search
-
支持正則的方法 search replace split match
-
截取的方法 substring substr
-
轉大寫和小寫 toUpperCase和 toLowerCase
-
靜態方法 fromCharCode 根據ascii轉為字串
Math類(數學類 一起和數學計算相關的方法都在這個里面且這個方法都是靜態方法)
屬性
PI 3.1415926
E 科學計演算法
方法
random 亂數
round 四舍五入
floor 向下取整
ceil 向上取整
pow 取冪次方
sqrt 開平方
abs 取絕對值
max 最大值
min 最小值
....
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/503199.html
標籤:JavaScript
上一篇:JS-陣列
下一篇:JS-物件及日期定時器
