先來看個例子
function cutstr(str, len) {
var temp;
var icount = 0;
var patrn = /[^\x00-\xff]/;
var strre = '';
for (var i = 0; i < str.length; i++) {
if (icount < len - 1) {
temp = str.substr(i, 1);
if (patrn.exec(temp) == null) {
icount = icount + 1
} else {
icount = icount + 2
}
strre += temp
} else {
break
}
}
return strre
}
字串截取的方法有slice(start,end+1),substring(start,end+1),substr(start,n)。他們之間在用法方面也有一些相同或不同。
slice(start,end+1):兩個參數時,參數指截取位置,截取含頭不含尾;一個參數時,預設截取到字串結尾。參數可以為負數,負數就倒著數位置。
substring(start,end+1):兩個參數時,參數指截取位置,截取含頭不含尾;一個參數時,預設截取到字串結尾。參數不可以為負數。
substr(start,n):兩個參數時,第一個參數指截取起始位置,第二個參數指截取字元個數;一個參數時,預設截取到字串結尾,第一個參數可為負數,第二個參數不可以為負數。
var str = "0123456789";
alert(str.substring(0));------------"0123456789"
alert(str.substring(5));------------"56789"
alert(str.substring(10));-----------""
alert(str.substring(12));-----------""
alert(str.substring(-5));-----------"0123456789"
alert(str.substring(-10));----------"0123456789"
alert(str.substring(-12));----------"0123456789"
alert(str.substring(0,5));----------"01234"
alert(str.substring(0,10));---------"0123456789"
alert(str.substring(0,12));---------"0123456789"
alert(str.substring(2,0));----------"01"
alert(str.substring(2,2));----------""
alert(str.substring(2,5));----------"234"
alert(str.substring(2,12));---------"23456789"
alert(str.substring(2,-2));---------"01"
alert(str.substring(-1,5));---------"01234"
alert(str.substring(-1,-5));--------""
alert(str.substr(0));---------------"0123456789"
alert(str.substr(5));---------------"56789"
alert(str.substr(10));--------------""
alert(str.substr(12));--------------""
alert(str.substr(-5));--------------"0123456789"
alert(str.substr(-10));-------------"0123456789"
alert(str.substr(-12));-------------"0123456789"
alert(str.substr(0,5));-------------"01234"
alert(str.substr(0,10));------------"0123456789"
alert(str.substr(0,12));------------"0123456789"
alert(str.substr(2,0));-------------""
alert(str.substr(2,2));-------------"23"
alert(str.substr(2,5));-------------"23456"
alert(str.substr(2,12));------------"23456789"
alert(str.substr(2,-2));------------""
alert(str.substr(-1,5));------------"01234"
alert(str.substr(-1,-5));-----------""
寫一個例子:
var str= "今天是星期二";
console.log(str.slice(3,6));//截取“星期二”並列印
console.log(str.substring(3,6));//截取“星期二”並列印
console.log(str.substr(3,3));//截取“星期二”並列印
但是如果只知道要在str中截取字元“星期二”,但是一下子又很難數出“星期二”到底在str的哪個位置的時候,還可以用indexOf()來擷取位置,如下:
var str= "今天是星期二";
var i=str.indexOf("星");//擷取字元關鍵字的位置,indexOf()方法第一個參數為要搜尋的關鍵字,第二個參數為搜尋的起始位置,如果省略第二個參數,預設起始位置為下標0。
console.log(str.slice(i,i+4));//截取“星期二”並列印
console.log(str.substr(i,4));//截取“星期二”並列印
當然,要求截取某個字串某個起始位置某個長度的字串,還可以封裝成一個函數。這樣就可以反覆調用啦。
function sub(str,startIndex,len){
return str.substr(startIndex,len);
}
console.log(sub("abcd",1,2));