先来看个例子
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));