字符串
1. 創(chuàng)建字符串(掌握)
- JS中的字符串是不可變的末患!
- 任何涉及到字符串變化的操作都不會(huì)改變?cè)甲址?/li>
- 都是從新創(chuàng)建一個(gè)新的字符串
JS中有兩種字符串扒吁。
1. 基本類型的字符串
1.字符串直接量
var str = "MR_LP"; //str 基本類型的字符串
console.log(typeof str);//彈出: String
2.轉(zhuǎn)換函數(shù)(注意:沒(méi)有new 關(guān)鍵字的)
var str = String(123);
//把基本數(shù)據(jù)類型的Number
//轉(zhuǎn)化為基本數(shù)據(jù)類型的String
console.log(typeof str); // 彈出 : String
3.引用類型
- 通過(guò)new 關(guān)鍵字來(lái)使用String()構(gòu)造方法
- 獲取到的一個(gè)對(duì)象菊匿,是引用類型Object....
var str = new String("asd");
console.log(typeof str);//彈出:Object
- 對(duì)象類型
2. 字符串的length屬性(了解)
字符串的length 屬性的值表示的是字符串中字符的個(gè)數(shù)
var str1 = "MR_LP"; //5
vvar str2 = "大家新年好"狭莱;//5
- length 是屬性奥裸,所以在使用的時(shí)候不需要添加括號(hào)
- 只有調(diào)用方法或者函數(shù)時(shí)候,才會(huì)添加括號(hào)
3. 字符串常用方法(重點(diǎn))
1. 字符相關(guān)方法
s.charAt(index)
參數(shù):
index
* 必選參數(shù)
表示字符串中某一個(gè)位置的數(shù)字
字符在字符串中的下標(biāo)
返回值:
* 返回的是指定位置的字符
* JS中沒(méi)有字符類型
* 返回的實(shí)際是一個(gè)長(zhǎng)度為1 的字符串
大家也可以想象為一個(gè)數(shù)組池颈,具體下標(biāo)是0 尾序,
直到最后一個(gè)下標(biāo)(str.length -1)
var str = "你好呀李先生";
console.log(str.charAt(0));//你
console.log(str.charAt(2));//呀
2. 返回指定字符的Unicode 編碼
str.charCodeAt(index)
- 返回指定字符的Unicode 編碼
- 返回值范圍是0~65535 之間的整數(shù)
var str = “aA0你好”
console.log(str.charCodeAt(0) );//97
console.log(str.charCodeAt(2) );//
console.log(str.charCodeAt(5) );//
3. unicode 編碼中需要記住的數(shù)值
- a ~ z
- A ~ Z
- 0 ~ 9
- 0 ——> 48
- 9 ——> 57
- A ——> 65
- Z ——> 90
- a ——> 97
- z ——> 122
4. 字符串連接方法
- 平常工作中經(jīng)常使用“ + ”進(jìn)行連接
- str.concat(str1..)
- 該方法用于連接兩個(gè)或者多個(gè)字符串
var str = "你好"躯砰;
console.log(str.concat("啊李先生"));//你好啊李先生
console.log(str+"啊"+"李先生");//你好啊李先生
console.log(str.concat("")== str);//true
caocat()如果連接的是一個(gè)長(zhǎng)度為0的字符串
則會(huì)返回這個(gè)字符串本身(this)
查找字符串出現(xiàn)位置
查找數(shù)組:index
查找字符串:
str.indexOf(searchValue,fromIndex)
該方法返回某個(gè)指定的字符串在字符串中首次出現(xiàn)的位置
參數(shù):
- searchValue 必選參數(shù)
- 規(guī)定需要檢索的字符串?dāng)?shù)值
- fromIndex 可選參數(shù)
- 規(guī)定 .字符串檢索的起始位置
- 如果省略每币,則從字符串首字母開(kāi)始
var str = "abcdefghikab";
console.log(str.indexOf("ab"));//0
console.log(str.indexOf("ab",1));//11
console.log(str.indexOf("z"));//-1
str.lastIndexOf(searchValue,fromIndex)
- 該方法返回一個(gè)指定字符串最后出現(xiàn)的位置
- 在一個(gè)字符串中從后往前檢索
var str = "efabcedf";
console.log(str.lastIndexOf("ef"));//6
console.log(str.lastIndexOf("ef",5));//0
console.log(str.lastIndexOf("ef"6));//6
console.log(str.lastIndexOf("ef"-1));//0
截取
數(shù)組的截取是:...
字符串的截取
str.substring(start,end)
- 該方法用于提取字符串中兩個(gè)指定下標(biāo)之間的內(nèi)容
- 參數(shù)
- start 必選參數(shù)
- 給出一個(gè)非負(fù)的整數(shù)
- end 可選參數(shù)
- 給出一個(gè)非負(fù)的整數(shù)
- 如果省略,則代表截取到
- 字符串的結(jié)尾
- 截取不包括結(jié)束位置的元素
- start 必選參數(shù)
var str = "董小姐琢歇,你嘴角向下的時(shí)候很美"兰怠;
console.log(str.substring(1));//小姐,你嘴角向下的時(shí)候很美
console.log(str.substring(1,3));小姐
console.log(str.substring(-1李茫,-3));
console.log(str.substring(5,3));
如果開(kāi)始大于結(jié)束對(duì)字符串沒(méi)有影響
str.substr(start,length)
參數(shù)
- start 必選參數(shù)
- 要截取的字符串的起始位置
- 如果是負(fù)數(shù)揭保,計(jì)算從字符串的尾部開(kāi)始截取
- length 可選參數(shù)
- 截取字符串中的長(zhǎng)度
- 如果省略,則代表
- 完整截绕呛辍(截取到尾部)
var str = "二十四橋明月夜秸侣,何處玉人教吹簫";
console.log(str.substr(1));
console.log(str.substr(1,3));
console.log(str.substr(1,-3));// 空
在ECMA....
在IE 4 中,start 無(wú)效
開(kāi)始位置強(qiáng)制為0
str.slice(start,end)
- 該方法用于提取字符串中的某個(gè)位置
- 并且新字符串返回...
- slice()可以支持負(fù)值
- 參數(shù):
- start
- 截取開(kāi)始位置
- end
- 截取結(jié)束位置
var str = "生命乘客改宠互,愛(ài)情價(jià)更高";
console.log(str,slice(0,1));
console.log(str,slice(-3,1));
結(jié)束不能為0...
三中截取方式之間的差別
- substring()
- substr()
- slice()
三者之間最大的差別在于 如果傳遞的參數(shù)為負(fù)數(shù) - substring() 會(huì)將所有的負(fù)數(shù)參數(shù)轉(zhuǎn)為0
- substr()會(huì)將第一個(gè)負(fù)數(shù)參數(shù)加上字符串的長(zhǎng)度味榛,第二個(gè)負(fù)數(shù)轉(zhuǎn)化為0
- slice() 會(huì)將負(fù)值和字符串的長(zhǎng)度相加
var str = "hell world ";//長(zhǎng)度為11
//結(jié)果 : he
var ret1 = str substring(2,-8);
//結(jié)果 : 空
var ret2 = str substr(2,-8);
//結(jié)果 : l
var ret3 = str slice(2,-8);
字符串的大小寫(xiě)轉(zhuǎn)換
給之前文字大小寫(xiě)轉(zhuǎn)換用的是什么?
屬性予跌?chuansifou..?最近還有寫(xiě)頁(yè)面嗎搏色?
文字顏色,下滑線 上劃線券册,對(duì)其频轿,設(shè)置文字的英文的大小寫(xiě)
文字傾斜是什么?文字粗體烁焙?-》文字大小寫(xiě)
str.toUpperCase() 轉(zhuǎn)換為大寫(xiě)
str.toUpperCase()
- 該方法將字符串中所有字符轉(zhuǎn)換為大寫(xiě)
str.toLowerCase()轉(zhuǎn)換為小寫(xiě)
str.toLowerCase()
- 該方法將字符串中所有字符轉(zhuǎn)換為小寫(xiě)
var ...
《黑客究竟是一群什么人》下午分享
精神:提倡信息和資源的共享航邢,反對(duì)商業(yè)壟斷。
- George Hotz
- Cracker
- Script Kiddie
- (冰人)馬克斯 維京 ——> 網(wǎng)絡(luò)犯罪之人
- 90 年代 紛紛投身 互聯(lián)網(wǎng)
- 網(wǎng)絡(luò)安全: 安全咨詢骄蝇,殺毒軟件
字符串方法中的lastIndexOf()
參數(shù):
- searchValue:
- 查找的內(nèi)容
- fromIndex:
- 搜索的范圍
- 通過(guò)網(wǎng)上查詢
- 不過(guò)之后翠忠,是班上的學(xué)生進(jìn)行了解,課后老師是說(shuō)會(huì)查詢
去除字符串中的首尾的空白字符
str.trim()
- 該方法是用于去除字符串中首尾
- 所有的空白字符
- 對(duì)字符串內(nèi)部的空白字符不做任何處理
var str ="\n \t abc ABC \t \n";
alert(str.trim());
字符串的替換方法
三種方法
1. replace()
replace(regExp/substr,replaceElement)
- regExp/substr:
- 必選參數(shù)
- regExp -> 正則表達(dá)式
- substr -> 字符串
- 需要注意的乞榨,如果第一個(gè)值是字符串
- 則將這個(gè)字符串作為檢索的直接量
- 而不是去查看是否能夠轉(zhuǎn)化為 regExp
- replaceElement
- 必選參數(shù)
- 規(guī)定了替換文本秽之,或者生成替換文本的函數(shù)
- 一般為 一個(gè)字符串值
var str = "abcabc";
var newStr = str.replace("ab","**");//**cabc
console.log(newStr);
替換只針對(duì)檢索到的第一個(gè)匹配到...
console.log(str.replace(/ab/ig,"**"));//**cabc
console.log(str.replace(/ab/g,"**"));//**c**c
console.log(str.replace(/AB/gi,"**"));//**cabc
gi
g:
- 正則對(duì)象的修飾符,表示匹配時(shí)進(jìn)行全局匹配
- (當(dāng)前字符中全部進(jìn)行替換)
i: - 正則對(duì)象中的修飾符吃既,
- 表示匹配的時(shí)候不區(qū)分大小寫(xiě)
2. match()
.match(匹配值)
在字符串用于在字符串中檢索指定的值
匹配的參數(shù)只有一個(gè)
要么是正則表達(dá)式
要么是字符串
返回值:
存放匹配結(jié)果的數(shù)組
var str = "abcabc";
var arr = str.match("ab");
console.loge(arr);
console.log(str.match(/ab/gi));
var str = "2017年02月08日15:25:30"考榨;
var num = time.match(/\d+/gi);
console.log
3. search()
str.search(匹配的參數(shù))
匹配的參數(shù)只有一個(gè),要么是正則表達(dá)式
要么是字符串
-
返回值:
- 第一個(gè)匹配項(xiàng)的索引鹦倚,
- 如果沒(méi)有找到河质,則返回 -1
不支持全局匹配 ...
var str = "abcabc";
var arr = str.search("ab");
console.log(arr); //0
console.log(str.search(/ab/gi));//0
字符串的比較
~ 和字符串很類似 ~
1. ==
var str1 = "今天是個(gè)好日子";
var str2 = new String"今天是個(gè)好日子";
console.log(str1 ==str2);//true
雖然兩個(gè)字符串一個(gè)是基本類型
另外一個(gè)是引用類型對(duì)象
但是他們的內(nèi)容是相等的掀鹅,所以返回的true
2. ===
var str1 = "哈哈";
var str2 = String"哈哈";
var str3 = new String "哈哈";
var str4 = new String "哈哈";
// 內(nèi)容和類型都相等散休,所以恒等
console.log(str1 === str2);//true
// 雖然內(nèi)容相等,但是類型不同乐尊,所以不算恒等
console.log(str1 === str3);//false
//3和4雖然內(nèi)容類型都相等戚丸,
// 但他們是對(duì)象,必須是一個(gè)對(duì)象才能恒等
console.log(str3 === str4);//false
3. str.localeCompare()
str.localeCompare(other)
- 如果字符串在字母表中排在字符串參數(shù)之前扔嵌,
- 則返回一個(gè)負(fù)數(shù)
- 如果字符串等于字符串參數(shù)限府,則返回 0
- 如果字符串在字母表中排在字符串參數(shù)之后,
- 則返回一個(gè)正數(shù)
var str = "b";
var compare_1 = str.localeCompare("a");
console.log(compare_1);//1
var str1 = "李"痢缎;
var str2 = "趙";
var compare_1 = str1.localeCompare(str2);
var str3 = "aa";
var str4 = "ab";
console.log(str3.localeCompare(str4));
字符串的切割
str.split()
str.split(separator,howmany)
- separator :
- 必選參數(shù)
- 字符串或者正則表達(dá)式胁勺,
- 從該參數(shù)指定的位置進(jìn)行切割
- howmany:
- 可選參數(shù)
- 該參數(shù)指定可返回的
- 數(shù)組的最大長(zhǎng)度
- 如果設(shè)置了該參數(shù),
- 返回的子串不會(huì)多于這個(gè)參數(shù)
- 如果沒(méi)有設(shè)置独旷,則不考慮長(zhǎng)度
- 將字符串全部切割
- 一般不設(shè)置該參數(shù)
var str = "how oud ra you ";
....
Math 對(duì)象
Math 主要用于做一些數(shù)學(xué)上的運(yùn)算
- 平方署穗,開(kāi)方,絕對(duì)值嵌洼,三角函數(shù)...
- 數(shù)學(xué)常用屬性:π (pai)
console.log(Math.PI);
數(shù)學(xué)常用屬性:E 自然對(duì)數(shù)的底數(shù)2.7 ...
console.log(Math.E);
絕對(duì)值
console.log(Math.abs(5));
console.log(Math.abs(-5));//5
最大值
console.log(Math.max(5,60,80,4));//80
最小值
console.log(Math.min(5,60,80,4));//4
返回大于等于 number 的最小整數(shù)(向上取整)
console.log(Math.ceil(13,14));//14
console.log(Math.ceil(13,-14));//13
返回大于等于 number 的最大整數(shù)(向下取整)
console.log(Math.floor(13,14));//13
console.log(Math.ceil(-13,14));//-14
四舍五入
console.log(Math.round(13.4));//13
console.log(Math.round(13.5));//14
console.log(Math.round(-13.4));//-13
console.log(Math.round(-13.5));//-14
指數(shù)
console.log(Math.pow(2,3));//8
平方根
console.log(Math.sqrt(4));//2
隨機(jī)數(shù)(偽隨機(jī)數(shù))(用的特別多)
console.log(Math.random());//隨機(jī)小數(shù)
隨機(jī)數(shù)函數(shù)
- 返回是是0~1之間的隨機(jī)小數(shù)
- 不包括0和1
三角函數(shù)(做特設(shè)效果)
console.log(Math.sin(Math.PI / 4));//45正弦
console.log(Math.cos(Math.PI / 4));//45余弦
console.log(Math.tan(Math.PI / 4));//45正切
- 存在精度問(wèn)題
- 反弦都是由這個(gè)基礎(chǔ)演變過(guò)去的
隨機(jī)數(shù)函數(shù)
- 寫(xiě)好注
- 留好退路
- 目標(biāo):
- 創(chuàng)建一個(gè)函數(shù)案疲,我們可以自己控制
- 輸出的隨機(jī)數(shù) 的 區(qū)間
- 預(yù)留參數(shù):
- 隨機(jī)數(shù)區(qū)間的最大值
- 隨機(jī)數(shù)區(qū)間的最小值
- 函數(shù)的名稱:
- getRandom
- 函數(shù)的實(shí)現(xiàn)過(guò)程:
Math.random()
返回是 0 ~ 1
給當(dāng)前這個(gè)隨機(jī)數(shù) 放大
-
做出最大值限制
- 將最大值和最小值進(jìn)行相減
- 將差值 + 1
封裝
在封裝前注意設(shè)限制
例如:最大值原本就是這個(gè)然后由于隨機(jī)數(shù)
導(dǎo)致錯(cuò)誤例如隨機(jī)出0.9999
... 查看生成隨機(jī)數(shù)代碼
function Random(min,max){
var rand = Math.random()*(max-min +1);
/ rad = Math.floor(rand)+min;
/ return rand;
}
傳入一個(gè)3 傳入一個(gè)9
0.99999* (9 - 3 + 1)
0.8888666*(9 -3 +1)
0.8888666*7
6.2
rand = Math.floor(rand) + min;
return rand;
}
for(var i = ... )
明天寫(xiě):(BOM):與瀏覽器交互的方法和接口
(DOW)