1.字符串嵌套 字符串可以嵌套使用 在單引號包裹的字符串內(nèi)部,應該使用雙引號進行嵌套 在雙引號包裹的字符串內(nèi)部,應該使用單引號進行嵌套 在 json解析的時候字符串需要單引號,因此推薦在各種情況都使用單引號的方式進行聲明 2.轉(zhuǎn)義字符,用特殊的符號來替代在字符串中,容易引起歧義的內(nèi)容 \' 表示單引號 \" 表示雙引號 一個字符串一般寫在一行內(nèi),不要分成多行 如果必須分成多行,可以采用反斜杠 “\” 作為連接符,或者將其分成多個字符串,通過拼接的方式進行組合 3.字符串長度 ?、?測量字符串長度:length屬性, 語法格式:字符串變量 . length ?、?字符索引:[]方法, 在字符串后面接中括號,中括號內(nèi)寫數(shù)字,能夠訪問字符串中每一個字符 代碼示例: var name=Franklin; var firstname=name[0]; 一次只能索引一個字符,如需索引多個,則使用加號(+)連接符多次索引 索引從0開始,0表示第一個字符 ?、?獲取指定位置字符:charAt()方法和 charCodeAt()方法, 兩種方法均是獲取指定位置字符,不同的是charAt()返回的是具體的字符,而charCodeAt()返回的是字符對應的Unicode編碼 代碼示例; var name=Franklin; var cat=name.charAt(0); var ccat=name.charCodeAt(0); var cat結(jié)果為“F”,而var ccat結(jié)果為“70” 兩個重要的字符編碼,A——65,a——97,其他字母累加即可 如果index是負數(shù),或者大于等于字符串長度的值,則 charCodeAt()返回的值為 NaN。 ?、?字符串連接:concat()方法, 將兩個或多個字符串拼接起來,組成一個新的字符串,用法與加號(+)有相同之處 語法格式:var str=str1.concat(str2,str3,……); 4.轉(zhuǎn)義字符 反斜杠 “\” 被稱作轉(zhuǎn)義字符 轉(zhuǎn)義字符可以將特殊字符轉(zhuǎn)換為字符串字符,可以用于轉(zhuǎn)義撇號、換行、引號等特殊字符 常見轉(zhuǎn)義符號:\' (單引號)、\" (雙引號)、\\ (反斜杠)、\n (換行)、\r (回車)、\t (制表符)、\b (退格)、\f (換頁符) \n、\r、<br/>區(qū)別 \n,英文是 new line,表示使光標下移一格 \r,英文是carriage return,表示使光標移到行首 <br/>是瀏覽器換行 總結(jié):\n \r表示源代碼換行(瀏覽器不解釋),<br/>表示瀏覽器文字換行 5.字符串對象 JavaScript中提供了另外一種字符串的聲明方式,叫作字符串對象,使用 new關(guān)鍵字將字符串定義為一個對象 語法示例:var newString=new String('Franklin'); var str1='frank’; //(typeof str1)返回值為 String var str2=new String('frank’); //(typeof str2)返回值為Object,String首字母必須大寫 通常不要創(chuàng)建 string對象,它會拖慢程序執(zhí)行速度,并可能產(chǎn)生其他副作用 字符串和字符串對象雖然效果相似,但它們是完全不同類型的數(shù)據(jù) 6. 字符串屬性及方法 substring,截取字符串 substr,截取字符串(長度) slice,截取字符串 indexOf,返回當前查找字符串的位置,如果沒有返回-1 lastindexOf,倒過來查找 trim,去掉字符串兩端的空格 toUpperCase和toLowerCase,大小寫轉(zhuǎn)換 localeCompare,比較兩個字符串大小 match,返回一個指定字符串的數(shù)組 search,返回位置 replace,替換字符串 split,字符串切割,返回數(shù)組 7.substring截取字符串 通過指定開始和結(jié)束位置,對字符串變量進行截取 語法:str . substring(index1, index2); 第一個參數(shù)表示截取的開始位置(包含index1),第二個參數(shù)表示結(jié)束位置(不包含index2) 結(jié)束位置理論上應該大于開始位置,如果第一個參數(shù)值大于第二個參數(shù)值,substring方法會自動調(diào)換兩個參數(shù)的位置 8.substr截取字符串 通過指定開始截取的位置和截取的長度,對字符串變量進行截取 語法:str . substr(num1, num2); substr方法的語法格式與substring方法很相似,但表達含義和用法差別很大,substr兩個參數(shù)不能互換 9.slice截取字符串 通過指定開始和結(jié)束位置,對字符串變量進行截取 語法:str . slice(num1,num2); slice的兩個參數(shù)不能互相調(diào)換位置,如果第一個參數(shù)大于第二個參數(shù),則返回結(jié)果為一個空字符串 substring、substr、slice三個方法的第一個參數(shù)都表示截取開始的位置,如果省略第二個參數(shù),那么這三種方法都表示從開始位置截取一直到字符串本身結(jié)束 10.indexOf 查找一個字符或字符串在另一個字符串中的位置 語法:str . indexOf('sub’); 字符串的查找是從源字符串開始處進行向后查找,且只針對首次出現(xiàn)的位置查找,返回值為所在位置的索引,如果查找失敗則返回 -1 11.lastindexOf 查找一個字符或字符串在另一個字符串中的位置 語法:str . lastindexOf('subStr’); 字符串的查找是從原字符串的末尾處進行向前查找,如果查找失敗則返回 -1 12.indexOf和 lastindexOf還可以接受第二個參數(shù),用于表示開始查找的位置 對于indexOf而言,表示從這個位置開始向后查找,語法:str. indexOf('subStr', num); 對于lastindexOf而言,表示從這個位置開始向前查找,語法:str.lastindexOf('subStr', num); 13.replace 將查找到的首次出現(xiàn)的字符串替換成目標字符串,如果查找失敗則不發(fā)生替換,而是將原字符串完整拷貝出來 語法:str . replace('oldStr','newStr'); replace方法并不會對原本字符串產(chǎn)生任何影響,而是生成一個新的字符串 replace方法只能替換首次出現(xiàn)的字符串,如果要替換多個, 需要依賴于正則表達式 14.trim 去掉字符串兩端多余的空格,中間部位的空格不受影響,語法:str . trim(); trim()方法并不會對原本的字符串產(chǎn)生任何影響,而是生成一個新的字符串 15.toUpperCase 將字符串中的英文字母全部轉(zhuǎn)換成大寫字母 語法:str .toUpperCase(); 16.同LowerCase 將字符串中的英文字母全部轉(zhuǎn)換成小寫字母 語法:str .toLowerCase(); 17.localeCompare 根據(jù)本地的排序規(guī)則對兩個字符串進行大小比較 語法:str1 .localCompare(str2); 如果計算結(jié)果大于0則表示 str1大于 str2,如果計算結(jié)果等于0則表示 str1等于 str2,如果計算結(jié)果小于0則表示 str1小于 str2 ECMAscript標準沒有規(guī)定如何進行本地特定的比較操作,只規(guī)定了該函數(shù)采用底層操作系統(tǒng)提供的排序規(guī)則,自定義比較方法也是可以的 18.match 查找原字符串是否匹配某個子字符串,返回結(jié)果是匹配的子字符串信息數(shù)組,如果沒有找到則返回null 返回的數(shù)組內(nèi)容包含:尋找的子字符串、子字符串位置索引、原字符串 語法:str . match('substr'); 示例:var string= 'hello world!'; string.match('hello'); //結(jié)果:['hello', index:0, input:'hello world!'] match方法只能查找到匹配的第一個字符串,但通過正則表達式的方式可以查找到所有匹配的字符串 19.search 與match方法相似,都是查找子字符串在指定字符串的位置信息 不同的是search方法返回的結(jié)果為下標(索引),如果沒有找到匹配字符串則返回 -1 語法:str . search('substr'); 示例:var string= 'hello world!'; string.search('hello'); //結(jié)果:0 20.split 根據(jù)指定的符號將字符串進行分割,分割后的所有子字符串整合成為一個數(shù)組返回 如果無法分割,則只返回一個元素——字符串本身 語法:str . split('symbol'); 示例:var string = 'see you soon!’ string . split(' '); //返回結(jié)果:['see’,'you’,'soon’] 分隔符號不同,返回的數(shù)組就可能不同 21.JavaScript字符集 js使用的是Unicode字符集,在JavaScript引擎內(nèi)部,所有字符都用Unicode表示 js不僅以Unicode存儲字符,還允許在程序中直接使用Unicode編碼表示字符 解析代碼時,js會自動識別一個字符是字面形式表示,還是Unicode形式表示,輸出給用的時候,所有字符都會轉(zhuǎn)成字面形式 示例,var eg = '\u00A9'; console.log(eg); //? \n(換行符),\u000A \'(單引號),\u0027 \"(雙引號),\u0022 \\(反斜杠),\u005C 22.字符串Base64編碼 Base64本身是一種加密方式,可以將任意字符轉(zhuǎn)換成可打印字符,通常主要是為了簡化程序處理,不出現(xiàn)特殊字符,使用這種編碼方法 JavaScript中為字符串提供了兩種有關(guān)Base64編碼的方法: btoa() 字符串或二進制值轉(zhuǎn)換為Base64編碼(加密) atob() Base64編碼轉(zhuǎn)換為原來的編碼(解密) 示例: var string = 'frank'; console.log(btoa(string)); //ZnJhbms= var string = 'ZnJhbms='; console.log(atob(string)); //frank 這兩種方法不適合非ASCII碼的字符,但可以通過中間插入一個轉(zhuǎn)碼環(huán)節(jié)的方式,使用這兩種方法將非ASCII碼字符與Base64進行轉(zhuǎn)換 這兩種方法限于解析非中文代碼,解析中文(包括英文)的方法為:encodeURIComponent() (加密)、decodeURIcomponent() (解密) 可以通過將中文加密后,再進行Base64加密,解密時操作順序相反 |
|