一、.length----獲取字符串長度;javascript
var myString="JavaScript"; console.log(myString.length); //10
二、concat----鏈接字符串生成新的字符串;html
var s1="a"; var s2="b"; var s3="c"; console.log(s1.concat(s2,s3)); //abc console.log(s1) //a
三、indexOf(str,fromIndex)----找到匹配項返回索引值,若是沒找到返回-1;
經常使用方法:java
var myString="JavaScript"; console.log(myString.indexOf("v")); //2 console.log(myString.indexOf("Script")); //4 console.log(myString.indexOf("key")); //-1
四、charAt(index)----返回指定索引位置的字符,若索引越界,返回空字符串;正則表達式
myString="JavaScript"; console.log(myString.charAt(1)); //a console.log(myString.charAt(10000000000000000)); //若索引越界,返回空字符串 -- "" console.log(myString.charAt(-1)); //若索引越界,返回空字符串 -- ""
五、substr(fromIndex,length)----從起始索引fromIndex開始截取長度length的字符串,獲取的字符串包含索引值的開始位置的值,若是length長度不指定或者超過可截取的最大長度,則截取到結尾,若是起始索引fromIndex爲負,則從右往左截取,-1表示倒數第一個;
myString="JavaScript";
console.log(myString.substr(1,1)); //a
console.log(myString.substr(1,2)); //av
console.log(myString.substr(1)); //avaScript(從下標爲一的元素開始查找直到結束)
console.log(myString.substr(1,4000000)); //avaScript
console.log(myString.substr(-1,1)); //t(從myString.length-1處開始查找一個元素)
console.log(myString.substr(-2,1)); //p (從myString.length-2處開始查找一個元素)
console.log(myString.substr(-6,2)); //Sc (從myString.length-6處開始查找2個元素)
console.log(myString.substr(-6,6)); //Script
7.slice()----截取 startIndex處的字符,不包含endIndex處的字符,基本用法和數組的slice用法同樣;api
myString="JavaScript";
console.log(myString.slice(1,3)) //av
若是startIndex > endIndex,則執行方法時返回空字符串
若是 start 爲負,將它做爲 length + start處理,此處 length 爲數組的長度;
console.log(myString.slice(-1,3)) //返回空
若是 end 爲負,就將它做爲 length + end 處理,此處 length 爲數組的長度;
console.log(myString.slice(2,-3)) //vaScr
8.運用string對象來進行查找數組
一、indexOf(str,fromIndex)----找到匹配項返回索引值,若是沒找到返回-1;
經常使用方法:
var myString="JavaScript";
console.log(myString.indexOf("v")); //2
console.log(myString.indexOf("Script")); //4
console.log(myString.indexOf("key")); //-1
2.判斷字符串中是否包含符合正則的敏感詞
// var i = str.search(/正則/i) i表示忽略大小寫 在str中找到第一個符合正則表達式要求的關鍵字的位置
//返回值:找到了返回關鍵詞的下標,若是沒有找到返回-1
/*var str=prompt("正在輸入消息.....");
var i = str.search(/(微|w(ei)?)\s*(信|xin|x)/);
console.log(i==-1?"發送成功":"發現敏感詞,不能發送!");*/
var str="No zuo no die No can no say";
var i =str.search(/n/i);
console.log(i);
3. 使用正則表達式查詢指定的一類關鍵詞
//var arr = str.match(/正則/ig) 查找str中全部符合正則表達式要求的關鍵詞,保存在一個數組中返回
//默認只找第一個,找到全部須要必須加上g
//返回值:全部銘感次組成數組,沒有找到返回null
var arr = str.match(/we/gi);
console.log(String(arr));
//強調:若是一個api有可能返回null,就必須先作判斷,不等null時在使用
九、split()----字符串分割成數組,返回新數組,不影響原字符串;dom
var s="a,bc,d";
console.log(s.split(",")); //["a", "bc", "d"]
s="a1b1c1d1";
console.log(s.split("1")); //["a", "b", "c", "d", ""]
10.RegExp 是正則表達式的縮寫。函數
當您檢索某個文本時,可使用一種模式來描述要檢索的內容。RegExp 就是這種模式。性能
簡單的模式能夠是一個單獨的字符。ui
更復雜的模式包括了更多的字符,並可用於解析、格式檢查、替換等等。
您能夠規定字符串中的檢索位置,以及要檢索的字符類型,等等。
11.、建立一個正則表達式節
你可使用如下兩種方法之一構建一個正則表達式:
使用一個正則表達式字面量,其由包含在斜槓之間的模式組成,以下所示:
/* /pattern/flags */ const regex = /ab+c/; const regex = /^[a-zA-Z]+[0-9]*\W?_$/gi;
在加載腳本後,正則表達式字面值提供正則表達式的編譯。當正則表達式保持不變時,使用此方法可得到更好的性能。
或者調用RepExp
對象的構造函數,以下所示:
/*
new RegExp(pattern [, flags])
*/
let regex = new RegExp("ab+c");
let regex = new RegExp(/^[a-zA-Z]+[0-9]*\W?_$/, "gi");
let regex = new RegExp("^[a-zA-Z]+[0-9]*\\W?_$", "gi");
正則表達式是嚴格區分大小寫的
i 加上去之後,讓正則表達式對大小寫不敏感, 不經常使用
g 全局匹配 找到了之後還會繼續的去找,沒有找到就一直找
m 執行多行匹配
(1).正則表達式表達式:[](一個方括號表示匹配一個字符)
[abc123] 匹配abc123任意一個字符
[a-z] 匹配a-z之間的任意字符,能夠表示一個範圍,中間用-鏈接
[0-9] 匹配1-9之間的任意一個數
[A-z] 按照ascii編碼來排序的,A-Z a-z的任意字符
(2).特殊字符
\n 查找換行符。
\f 查找換頁符。
\r 查找回車符。
\t 查找製表符。
\v 查找垂直製表符。
(3).元字符
. 查找單個字符,除了換行和行結束符。
. === [^\n\r]
\w 查找單詞字符。
\w === [A-Za-z0-9_]
\W 查找非單詞字符。
\W === [^\w]
\d 查找數字。
\d === [0-9]
\D 查找非數字字符。
\D === [^\d]
\s 查找空白字符。
\s === [\t\n\r\v\f]
\S 查找非空白字符。
\S === [^\s]
(4).修飾類
\b 匹配單詞邊界。
\B 匹配非單詞邊界。
var str = "thIsis boy";
var reg = /\Bis\B/ig; //修飾字符不佔文本內容
console.log(str.match(reg));
n$ 匹配任何結尾爲 n 的字符串。
var str = "abcabc";
var reg = /abc$/g;
console.log(str.match(reg));
^n 匹配任何開頭爲 n 的字符串。
var str = "Abcabc";
var reg = /^abc/ig;
console.log(str.match(reg));
(5).量詞
n{X} 匹配包含 X 個 n 的序列的字符串。
var str = "aaaaaaaaaaaaaaaabc";
var reg = /a{5}/g;
console.log(str.match(reg));{aaaaa,aaaaa,aaaaa,aaaaa}
n{X,Y} 匹配包含 X 至 Y 個 n 的序列的字符串。
正則表達式默認的是貪婪模式,按照最多的進行匹配
var str = "aaaaaaaaaaaaaaaaabc";
var reg = /a{1,3}?/g; //後面加上問好表示非貪婪模式,按照最少的進行匹配
console.log(str.match(reg));
n{X,} 匹配包含至少 X 個 n 的序列的字符串。
var str = "aaaaaaaaaaaaaaaaabc";
var reg = /[ab]{1,}/g; //最少匹配一個
console.log(str.match(reg));
n+ 匹配任何包含至少一個 n 的字符串。
+{1,}
var str = "aaaaaaaaaaaaaaaaabc";
var reg = /[ab]+/g; //最少匹配一個
console.log(str.match(reg));
n* 匹配任何包含零個或多個 n 的字符串。
*{0,}
n? 匹配任何包含零個或一個 n 的字符串。
?{0,1}
(6).屬性
global 是否具備標誌 g。
ignoreCase 是否具備標誌 i。
lastIndex 一個整數,標示開始下一次匹配的字符位置 。 遊標,能夠獲取能夠賦值
multiline 具備標誌 m。
source 正則表達式的源文本。
var str = "abcabcabc";
var reg = /[A-Z]/im;
console.log(reg.source)
12.RegExp對象
//RegExp對象
//一、what:封裝一條正則表達式,提供了使用正則表達式進行查找和驗證的API
//2.when 查找關鍵詞的第四種狀況:即查內容,又查位置
// 利用正則表達式進行驗證
//3.how:
//建立 直接量的建立 已知規則
var reg=/no/g;// 全部與的/在正則中都要加上\/才能轉義爲/
console.log(typeof reg);//object 對象
//動態建立正則
// var reg1=new RegExp(/正則/,"gi");
var str = "牀前明月光,一行白鷺上青天,日照香爐生紫煙,飛流直下三千尺";
var names=['明月','白鷺','飛流','紫煙',"青天"];
var nameReg = new RegExp(names.join("|"),"g");
var kws = str.match(nameReg);
console.log(kws);
4.查找關鍵詞:第四種狀況 即知道找位置又找具體內容
//var arr = reg.exec(帶查找的完整字符串)
/*
返回值:本次找到的一個關鍵詞及位置
arr[0]:關鍵詞的內容 若是正則中有分組 arr[n]:自動保存在第n個分組匹配的子內容
arr[index]:當前關鍵詞位置 -- > arr.index 若是沒有找到返回null
每次查找後,都將reg.lastIndex屬性(下一次開始位置)修改成當前index+關鍵詞長度,至關於跳過了當前關鍵詞繼續向後找
//5.檢查字符串是是否徹底知足正則表達式的要求!
//var bool = reg.test(待檢測字符串)
//只要是驗證,reg中必須前加^ 後加$ 要求衝頭到位,都必須完整匹配
//ex:輸入六位數的密碼 知道輸入域正確爲止(練習)
var reg=/^\d{6}$/;
var input=prompt("請輸入六位數字密碼");
var bool=reg.test(input);
console.log(bool);
例題:API(str.match/replace
//替換:將字符串中全部敏感(符合正則表達式規則)詞替換爲新內容
//基本替換 str = str.replace(/正則/ig,'替換值'); 替換之後返回一個新的字符串
var str="No zuo no die No can no say";
// no---bu
var kwr = str.match(/no/gi);
var newStr = str.replace(/no/gi,'bu');
console.log(newStr);
console.log('共替換'+kwr.length+"處");
//yes ---***
var reg=/yes/gi;
kwr=str.match(reg);
var unStr=str.replace(reg, "***");
console.log(unStr);
console.log(kwr==null?"沒有找到匹配的關鍵詞":"替換"+kwr.length+"處")
//衍生操做:刪除,將找到的字符串替換成空字符
str = str.replace(/葡萄/g,"");
console.log(str)
//格式化:將原字符串的關鍵詞按照指定格式從新組合
/*
step1:用正則將元字符串中的內容分組
step2:用replace按新格式從新組合各個分組的內容
ex:"19950415"--->1995年04月15日
birth.replace(/(\d{4})(\d{2})(\d{2})/g,"$1年$2月$3日")
其中$n能夠得到第n個()分組對應的子字符組
做業2 :對信息進行加密 "520 1314" "今晚八點,不見不散"
charCodeAt String.fromCharCode sub() slice() substr()
定義一個函數加密規則:每字符串都轉化爲unicode碼 ---保證每個unicode碼都是五給字符 不夠5個字符的地方用0補上
定義一個函數解密:經過unicode碼 轉換爲字符
var msg = "今晚8點,老地方不見不散,w84u" function encode(msg){ for(var i=0,code="";i<msg.length;i++){ //將msg中當前字符轉換爲unicode,拼接到code上 // code+=msg[i].charCodeAt(); var u= msg.charCodeAt(i); //加密的unicode碼都變成五位數 /*if(u<100){ u="000"+u; }else if(u<1000){ u="00"+u; }*/ //(u+100000+"").slice(1) //52+100000=100052 //20170+100000=120170 .slice(1) =20170 // 012345 code += (u+100000+"").slice(1); } return code; } var code = encode(msg); console.log(code); function decode(code){ //聲明空字符 str var str=""; // return str; } var receive = decode(code);//對加密的信息解密 console.log(receive);//輸出解密以後的結果
做業3:對名字排序:
<button onclick="nameSort()">對名字排序</button> <ul id="ulNames"> <li>tom</li> <li>rose</li> <li>jim</li> <li>smith</li> <li>jerry</li> <li>Ary</li> <li>lucy</li> </ul> <script> function nameSort(){ //獲取ulNames的innerHTML var html = document.getElementById("ulNames").innerHTML; //刪除html開頭的空字符<li>和結尾的</li>空字符 html=html.replace(/^\s*<li>|<\/li>\s*$/g,''); //將html按</li>空字符<li>切割保存爲names數組中 var names = html.split(/<\/li>\s*<li>/); //將數組中的名字排序 names.sort(); //拼接成 html代碼 html="<li>"+names.join("</li><li>")+"</li>"; //將拼接好的html寫到ulNames中去 ulNames.innerHTML=html; } ulNames.innerHTML="<li>"+ ( ulNames.replace(/^\s*<li>|<\/li>\s*$/g,'') .split(/<\/li>\s*<li>/) .sort() .join("</li><li>") ) +"</li>";
做業4:生成隨機數:
//隨機六個不重複的數字 範圍在 1~33之間 function getRond(){ //定義空數組 nums var nums = []; //反覆:生成隨機數 只要nums.length<6 while(nums.length<6){ //重複生成隨機1~33之間的隨機數 var r = Math.floor(Math.random()*33+1); //判斷r當前的值是否在nums中已經存在了 for(var i=0;i<nums.length;i++){ if(nums[i]==r){//若是當前元素和r相等,退出循環 break; } } if(i==nums.length){//若是nums中不包含r,就將r加入nums數組 nums.push(r) } } console.log(nums); }
}