字符串
字符串概述
字符串也是一個數(shù)據(jù)結構(串)膝捞,將同樣的內容串在一起瀑凝。因為在對應的js里面字符串屬于一個值類型(值類型是常量 常量是不能變的)
字符串是不能改變的序芦。結合上一章提到的數(shù)據(jù)結構里面串也是一個存儲結構,作為存儲結構增刪改查的方法(字符串的增刪改查 不能針對于本身 而是返回一個新的字符串)
字符串的聲明
1粤咪、值類型賦值
var str="hello world"
2谚中、以new關鍵詞說明(引用了對應的值地址)
var str=newString("abc");//引用了一個空值的地址
ES6新增 字符串模板
var a='jack'
var str=`hello string ${a}`//鍵盤上面的Esc下面的這個鍵 解析${} 以變量來解析
console.log(str);//hello string jack
new String() 和 Stirng()區(qū)別
new String是構建一個String對象(引用數(shù)據(jù)類型 有地址指向的)
String單純的將對應的傳進入的參數(shù)轉為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
//可以有倆個參數(shù) 第一個參數(shù)為 對應需要查詢的字符串 第二個參數(shù)為 開始查找的下標
console.log(str.indexOf('b','2'))//從下標2開始找 找第一個出現(xiàn)b的位置 返回-1
var str='abbbccde'
console.log(str.indexOf('b','2'))//從下標2開始找 找第一個出現(xiàn)b的位置 在查找的時候把下標為2的位置當作第一個 返回2
lastindexOf
console.log(str.lastIndexOf('b'));//3
console.log(str.lastIndexOf('b',0));//-1 從0的位置往前找
console.log(str.lastIndexOf('b',4));//3? 從4的位置往前找
//也就是說 默認的情況下 對應的后面的下標可以省略 str.length-1
自定義函數(shù)實現(xiàn)對應的indexOf方法和lastIndexOf方法
? ? ? ? //實現(xiàn)對應的indexOf方法
? ? ? ? var searchStr = "abcdefabcd"
? ? ? ? function indexOf(str, index) {
? ? ? ? ? ? if (!index) { //當前如果是undefined的值
? ? ? ? ? ? ? ? index = 0 //默認為0
? ? ? ? ? ? }
? ? ? ? ? ? // 得到str的長度
? ? ? ? ? ? var len = str.length
? ? ? ? ? ? //這個5是表示當前的字符串的總長度
? ? ? ? ? ? for (var i = index; i < searchStr.length; i++) {
? ? ? ? ? ? ? ? var s = ''
? ? ? ? ? ? ? ? for (var j = 0; j < len; j++) {
? ? ? ? ? ? ? ? ? ? s += searchStr[i + j]
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? if (s == str) {
? ? ? ? ? ? ? ? ? ? return i
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? return -1
? ? ? ? }
? ? ? ? console.log(indexOf('bc', 4));
? ? ? ? //實現(xiàn)對應的lastindexOf方法
? ? ? ? var searchStr = "abcdefabcde"
? ? ? ? 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 = 0; j < len; j++) {
? ? ? ? ? ? ? ? ? ? s += searchStr[i - j]
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? if (s == str) {
? ? ? ? ? ? ? ? ? ? return i
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? return -1
? ? ? ? }
? ? ? ? console.log(lastIndexOf('e', 9));
search方法(和indexOf一樣 支持正則表達式)
var str='abc'
console.log(str.search(/ab/))? //0 //ab/正則表達式
console.log(str.search(/ab/,0))//從0的位置開始找 匹配ab的內容
靜態(tài)方法(通過構造方法名直接調用的叫做靜態(tài)方法? 他是對應的static修飾的)
fromCharCode 將對應的ascii碼轉為字符串
var str=string.fromCharCode(97)? //返回的是一個字符串
console.log(str)//a
concat將多個字符串轉為連接成一個字符串返回
var str=`hello`.concat('world')
console.log(str)//helloworld
支持正則的方法(4個)
search查找(找到返回下標 沒找到返回-1)
replace替換(將找到的第一個字符串替換成一個新的字符串)
var str='abc'
str.replace('a','hello')//將a替換成hello
console.log(str1)
split分割(返回數(shù)組)
//分割 成為一個數(shù)組 split 數(shù)組變成字符串 join(默認以,)
var str='1,2,3'
//默認不是以寥枝,作為分割 默認不分割 直接填入到數(shù)組
console.log(str.split());//['1,2,3']
console.log(str.split(','));//['1', '2', '3']
match匹配(返回數(shù)組)
//match 返回一個數(shù)組 (匹配的內容)
var str="abcacc"
//默認只找第一個匹配的 加入到數(shù)組
var arr=str.match('a')
console.log(arr);
截取的方法
substring(開始的下標宪塔,結束的下標)
substr(開始的下標,截取的個數(shù))
//截取的方法 substring substr
var str="abcdef"
//substring(開始的下標囊拜,結束的下標)不包含結束的下標
console.log(str.substring(1));//bcdef
console.log(str.substring(1,3));//bc//截取不包含最后一個下標(默認不填str.length)
//substr(開始的下標某筐,截取的下標)
console.log(str.substr(1));//默認的情況是截取到最后 bcdef
console.log(str.substr(1,3));//從下標1開始截取 截取個數(shù)為3個 bcd
轉大寫(toUpperCase)
var str='abcd'
console.log(str.toUpperCase());
轉小寫(toLowerCase)
var str='ABCD'
console.log(str.toLowerCase());
Match類 (數(shù)學類 一切和數(shù)學計算相關的方法都在這個里面 且這個方法都是靜態(tài)方法)
屬性
PI 3.1415926
E 科學計數(shù)法
方法
random隨機數(shù)
round四舍五入
floor向下取整
celi向上取整
pow取冪次方
sqrt開平方
abs取絕對值
max最大值
min最小值
...
經(jīng)典字符串的題目(回文字符串 馬拉車算法(貪心算法)dp動態(tài)規(guī)劃 dp數(shù)組 字符串搜索重復的字符串最長的 hash比對)