一、字符串概述
1.字符串
描述:由單引號或者雙引號包裹起來的,零個或多個排列在一起的字符構成的結構
注意:
(1)字符串在定義的時候,不要使用容易引起歧義的內容
(2)由於JSON解析中規定字符串采用單引號定義,因此統一規定定義字符串時采用單引號。
補充:
字符串提供了一些特殊字符用來替代,在字符串中容易引起歧義的字符
(1) \' 代表 '
(2) \" 代表 "
例子:
var introduceWord1 = 'my name is \'frank\'.';
var introduceWord2 = "my name is \"frank\".";
console.log(introduceWord1);
console.log(introduceWord2);
擴展:
(1)字符串必須在一行之內定義,不能分成多行。
如果必須分成多行定義,可以采用【在一行末尾添加\反斜線】作為連接符
var str1 = 'hello\
world!\
goodbye\
world!';
console.log(str1);
(2)實際上還能夠通過“+”加號作為連接符,分成多行定義字符串。
var str2 = 'hello ' +
'world!' +
' goodBye' +
' world!';
console.log(str2);
二、字符串長度
1.length屬性:
描述:length屬性能夠返回一個數字類型的結果,表示字符串的長度,也就是字符串包含的字符個數
語法:字符串變量.length
例子:
var str = 'frank';
console.log(str.length);
console.log(typeof str.length);
案例:
【判斷賬戶名長度】
var userNameInput = document.getElementById('userName');
var loginBtn = document.getElementById('login');
loginBtn.onclick = function () {
var userName = userNameInput.value;
if(userName.length>=6&&userName.length<=18){
console.log('登錄成功');
}else if(userName.length<6){
console.log('用戶名不得小於6位');
}else{
console.log('用戶名不得超過18位');
}
};
2.[]字符索引
描述:能夠根據指定的下標獲取字符串中的字符。
語法:字符串變量[下標]
注意:
(1)下標:字符串中每一個字符自帶的序號,下標從0開始,最后一個是length-1
(2)索引一次只能獲得一個字符,不能一次獲得多個字符
例子:
var str3 = 'xiaoMingTongXue';
var resultStr = '';
for(var i=4; i<8; i++){
resultStr+=str3[i];
//resultStr+=str3.charAt(i);
}
console.log(resultStr);
3.charAt()方法
描述:能夠根據指定的下標獲取字符串中的字符,作用等同於[]字符索引
語法:字符串變量.charAt(下標)
4.charCodeAt()方法
描述:能夠根據指定的下標獲取字符串中字符對應的UniCode編碼。
語法:字符串變量.charCodeAt(下標)
注意:
(1)A--65、a--97需要記住的UniCode編碼
(2)如果參數是負數或超過字符串長度,則本方法返回NAN
案例:
【判斷首位是字母】
var userNameInput = document.getElementById('userName');
var loginBtn = document.getElementById('login');
loginBtn.onclick = function () {
var userName = userNameInput.value;
//先獲取首位字符編碼
var firstCode = userName.charCodeAt(0);
//只要判斷編碼在字母范圍內,就是,否則就不是
if((firstCode>=65&&firstCode<=90)||(firstCode>=97&&firstCode<=122)){
console.log('登錄成功');
}else{
console.log('首位不是字母,內容不合法');
}
};
5.concat()方法
描述:concat()方法用於拼接多個字符串
語法:字符串變量1.concat(字符串變量2,字符串變量3,...)
例子:
var str1 = 'hello';
var str2 = 'world';
var str3 = 'frank';
var result = str1.concat(str2,str3);
console.log(result);
三、轉義字符&字符串對象
1.轉義字符
描述:轉義字符是\反斜線,配合一些字符能夠組成帶有特殊含義的符號,
用來避免字符串定義的時候出現混淆
類型:\'(表示') \"(表示") \\(表示\) \n(換行) \r(回車)
例子:
var str = 'D:\\英語學習資料\\';
console.log(str);
var str1 = 'hello \n world!';
console.log(str1);
2.字符串對象
描述:字符串除了用單雙引號定義之外,還能夠通過new命令創建
語法:var strObj = new String('字符串內容');
說明:
(1)通過new創建的字符串,並不是string類型,而是object類型
(2)創建字符串對象后,肯能會造成內存部分的問題。
例子:
var str = 'hello';
console.log(str);
console.log(typeof str);
var strObj = new String('hello');
console.log(strObj);
console.log(typeof strObj);
四、字符串截取
1.subString()
描述:表示從參數一下標開始截取,到參數二下標為止之間的字符串。不包括參數二下標的字符
語法:str.subString(fromIndex,toIndex);
注意:subString()方法的兩個參數可以互相調換位置,對結果沒有影響。
例子:
var str = 'welcome 19big victor zhaokai';
//var result = str.substring(8,13);
var result = str.substring(13,8);
console.log(result);
2.subStr()
描述:表示從參數一下標開始截取,截取參數二長度的內容
語法:str.subStr(fromIndex,strLength);
注意:subStr()方法的兩個參數不能互換位置
例子:
var str = 'welcome 19big victor zhaokai';
var result = str.substr(8,13);
console.log(result);
3.slice()
描述:表示從參數一下標開始截取,到參數二下標為止之間的字符串。不包括參數二下標的字符
語法:str.slice(fromIndex,toIndex);
注意:本方法兩個參數不能互換位置,並且后一個參數必須大於前一個參數
【如果后一個參數小於前一個參數,則返回一個空字符串''】
例子:
var str = 'frank';
var subStr1 = str.slice(1,4);
console.log(subStr1.length);
3.5補充:以上三個截取的方法都不會對原字符串造成影響。
4.小技巧:
如果以上三個方法在截取字符串的時候,只寫第一個參數。
那么表示從參數下標開始,一直截取到字符串末尾。
例子:
var str = 'here is a string';
var subStr1 = str.slice(5);
var subStr2 = str.substring(5);
var subStr3 = str.substr(5);
console.log(subStr1);
console.log(subStr2);
console.log(subStr3);
五、字符串查找
1.indexOf()字符串查找
描述:在已知的字符串中,查找【目標字符串】第一次出現的下標。沒有找到返回-1
語法:str.indexOf(目標字符串,fromIndex);
注意:第一個參數是必要參數,第二個參數是可選參數。如果不寫默認從下標為0開始查找。
例子:
var str = 'abcde';
var index = str.indexOf('bc');
console.log(index);
2.lastIndexOf()字符串查找
描述:在已知的字符串中,查找【目標字符串】最后一次出現的下標。沒有找到返回-1
語法:str.lastIndexOf(目標字符串,toIndex);
注意:第一個參數是必要參數,第二個參數是可選參數。如果不寫默認查找到結尾為止。
例子:
var str = 'xiaoMingTongXue';
var lastIndex = str.lastIndexOf('i',3);//第二個參數表示找到哪個下標停止
console.log(lastIndex);
六、字符串替換
1.replace()
描述:將字符串中第一個出現的原字符串,替換為目標字符串。
如果沒有找到,則將字符串復制一份返回
語法:str.replace(oldStr,newStr);
注意:replace()方法盡管被稱為替換,但不會對原字符串造成任何影響。
例子:
//1.要求將字符串中第一個frank,替換成(XXX)
var str = 'hello frank! goodbye frank!';
var newStr = str.replace('frank','(XXX)');
console.log(newStr);
console.log(str);
七、字符串其他操作方法
1.trim()
描述:去掉字符串兩端多余的空格
語法:str.trim();
注意:
(1)小括號必須寫,盡管小括號里面不需要寫內容
(2)去掉空格是指字符串兩端的空格,對字符串內部的空格無影響
(3)不會對原字符串造成影響
例子:
var str = ' hello world goodbye world ! ';
console.log(str.trim());
console.log(str);
2.toUpperCase()、toLowerCase()
描述:將字符串中的英文字母轉換成大寫、小寫
語法:str.toUpperCase()、str.toLowerCase()
注意:不會對原字符串造成影響
例子:
var str = 'Hello World!';
console.log(str.toUpperCase());
console.log(str.toLowerCase());
console.log(str);
3.match()
描述:方法用來在字符串中查找目標字符串第一次出現的信息,如果沒找到返回null
語法:str.match(目標字符串)
例子:
var str = 'hello frank! goodBye frank!';
var info = str.match('frank');
console.log(info);
4.search()
描述:方法用來在字符串中查找目標字符串第一次出現的下標,如果沒有找到返回-1
語法:str.search(目標字符串)
例子:
var str = 'hello frank! goodBye frank!';
var result = str.search('franky');
console.log(result);
5.split()
描述:split方法能夠根據指定的符號將字符串進行分割,分割后的每一個子元素整合成一個數組返回。如果無法分割,那么返回的數組只有一個元素,這個元素就是字符串本身。
語法:str.split(symbol);
例子:
var string = 'good bye everyone.';
string.split(' ') ;//["good", "bye", "everyone"]
ps:split方法最后會返回一個數組。
ps:分割的符號不同,得到的結果也不同。
八、拓展
只能解析非中文代碼
btoa():字符串或二進制值轉為Base64編碼 (加密)
atob():Base64編碼轉為原來的編碼 (解密)
加密解密中文文字
encodeURLComponent() (加密)
decodeURLComponent() (解密)
