標籤:
通過 + 串連符拼接字串:
var str1 = "hello";str1 = str1 + " javaScript";document.write(str1);
或者:
var str1 = "hello";str1 += " javaScript";document.write(str1);
輸出:hello javaScript
要在字串中添加分行符號,需要使用逸出字元"\n",但這種方法只能用在像警告、確認對話方塊之類的情況下。
如果將這段文本作為HTML內容呈現,就無效了,此時用"<br>"代替它
js concat()方法:
string.concat(string2, string3[, ..., stringN]);
var str2 = "hello".concat(" javaScript"," world");document.write(str2);
這種拼接的方式不如直接用加號拼接方便;
js 字串長度length屬性:
返回字元個數,而不是位元組長度;
var str = "kitty貓";document.write(str.length);
返回長度6
js substr(),用於返回一個從指定位置開始的指定長度的子字串。
文法:stringObject.substr(start [, length ])
start 必需。所需的子字串的起始位置。字串中的第一個字元的索引為 0。
length 可選。在返回的子字串中應包括的字元個數。
說明
如果start為負數,則start=str.length+start。start大於字串最後一個字串的索引將返回Null 字元串。
如果 length 為 0 或負數,將返回一個Null 字元串。
如果沒有指定length參數或者length大於字串長度,則子字串將延續到stringObject的最後。
兩參數為小數也是被允許的採用去小數部分操作,使返回結果不至於報錯,但實際上沒有意義,索引和長度不會存在小數的情況;
js substring(),substring 方法用於提取字串中介於兩個指定下標之間的字元
開始和結束的位置,從零開始的索引
參數 描述
start 必需。一個非負的整數,規定要提取的子串的第一個字元在 stringObject 中的位置。
stop 可選。一個非負的整數,比要提取的子串的最後一個字元在 stringObject 中的位置多 1。如果省略該參數,那麼返回的子串會一直到字串的結尾。
返回一個新的字串,該字串值包含 stringObject 的一個子字串,其內容是從 start 處到 stop-1 處的所有字元,其長度為 stop 減 start。
substring 方法返回的子串包括 start 處的字元,但不包括 end 處的字元。
如果 start 與 end 相等,那麼該方法返回的就是一個空串(即長度為 0 的字串)。
如果 start 比 end 大,那麼該方法在提取子串之前會先交換這兩個參數。
如果 start 或 end 為負數,那麼它將被替換為 0。(end為負數那麼,替換成0,那麼就是substr(0,startvalue))
兩參數為小數也是被允許的採用去小數部分操作,使返回結果不至於報錯,但實際上沒有意義,索引不會存在小數的情況;
js slice()
string.slice(start, end) 返回從start位置開始到end-1位置的的子字串;
start大於字串長度返回Null 字元串;
end大於字串長度返回從start到字串結尾的子串;
start和end都可以為負數,意為從字串最後倒著數,最後一個字元為-1;
start和end為負數都應先從字串最後數起確定自己的索引;
如果end的索引小於start的索引則返回Null 字元串;
兩參數為小數也是被允許的採用去小數部分操作,使返回結果不至於報錯,但實際上沒有意義,索引不會存在小數的情況;
js toLowerCase()和toUpperCase()
toLowerCase()將字串轉為全小寫;
toUpperCase()將字串轉為全大寫;
不影響字串本身;
var str = "ShanGHai";document.write(str.toLowerCase() + "<br>");document.write(str.toUpperCase() + "<br>");document.write(str);
shanghai
SHANGHAI
ShanGHai
js indexOf()
返回某個指定的字串在字串中首次出現的位置(從左向右)。包含子串返回下標,不包含返回-1;
js lastIndexOf()
返回從右向左出現某個字元或字串的首個字元索引值;
js charAt(index) 返回某個索引處的字元;
js charCodeAt(index) 返回某個索引處字元的unicode值;
js String.fromCharCode(index1,index2...indexn)
var str = String.fromCharCode(72, 101, 108, 108, 111); document.write(str);
輸出Hello
上面的length屬性可以確定字串的字元長度;
當js校正時,需要限定字元長度,必鬚根據位元組來統計;
匹配中文字元的Regex: [\u4e00-\u9fa5]
匹配雙位元組字元(包括漢字在內):[^\x0000-\x00ff]
下面的位元組長度統計來自於:星期八的Blog
內容正確性未測試;
str.charCodeAt(i)>255 的字元佔兩個字元;
1 var lenFor = function(str){ 2 var byteLen=0,len=str.length; 3 if(str){ 4 for(var i=0; i<len; i++){ 5 if(str.charCodeAt(i)>255){ 6 byteLen += 2; 7 } 8 else{ 9 byteLen++;10 }11 }12 return byteLen;13 }14 else{15 return 0;16 }17 }
Regex檢測字串的位元組長度:
var lenReg = function(str){ return str.replace(/[^x00-xFF]/g,‘**‘).length;}
用Regex檢測所用的時間竟然是for迴圈的兩倍!!!!
這個好使---
function getBytesLength(str) {
// 在GBK編碼裡,除了ASCII字元,其它都佔兩個字元寬
return str.replace(/[^\x00-\xff]/g, ‘xx‘).length;
0003.js字串操作