原生JavaScript實現字串長度截取

來源:互聯網
上載者:User

先來看個例子

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));

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.