从字符串提取一个列表

其实这一节,重点是要复习一下字符串的操作

http://www.runoob.com/jsref/jsref-obj-string.html

Q:This is a list of items: cherries,limes,oranges,apples.提取这句话中包含的项目列表。注:已(:)开始,已(.)结束。

A:提取结果:['cherries','limes','oranges','apples']

1        var sentence='This is one sentence.This is a list of items:'+
2                     'cherries,oranges,apples,bananas.That was the list of items.';
3             var start=sentence.indexOf(':');
4             var end=sentence.indexOf('.',start+1);
5             var listStr=sentence.substring(start+1,end);
6             var fruits=listStr.split(',');
7             console.log(fruits);

结果

简单说明一下代码中用到的方法,自己也再记一遍

indexOf()返回某个指定的字符串值在字符串中首次出现的位置。

    如果没有匹配到字符串则返回-1

    string.indexOf('需检索的字符串值,必须',‘字符串开始检索的位置,合法取值范围0到string.length-1,若省略该参数,则将从字符串的首字符开始检索’)

    !indexOf()区分大小写

    ! lastIndexOf()  相当于从后向前检索

substring()用于提取字符串中介于两个指定下标之间的字符

       !! 返回的子串包含开始处的字符,但不包含结束处的字符。

     string.substring('规定要提取的子串的第一个字符在string中的位置,必须',‘可选,比要提取的子串的最后一个字符在string中的位置多1’) 

     string.substring(from,to)   参数不可为负!!!!!若要为负使用slice

substr()在字符串中抽取从开始下标开始的指定数目的字符

      string.substr(start,length);

split()把字符串分隔成字符数组

slice(start,end)提取字符串的某个部分,并以新的字符串返回被提取的部分。(感觉和subString很像哎)

        包含start,不包含end

                     如果参数是负数,则该参数规定的是从字符串的尾部开始算起的位置,如-1指的是字符串的最后一个字符……

            

高级话题:

  分隔后得到的数组元素可能包含空白所产生的部分,如何清理元素两端的空白字符?

方法一:  

fruits.forEach(function(elemt,index,arr){
                arr[index]=elemt.trim();
}) console.log(fruits);

trim()移除字符串首尾的空白

Array.forEach()用于调用数组的每个元素,并将元素传递给回调函数。

!!forEach()对于空数组是不会执行回调函数的。

  array.forEach(function(currentValue,index,arr){

  },thisValue)

 参数说明:

  currentValue  必须。当前元素

  index        可选。当前元素的索引值。

  arr       可选。当前元素所属的数组对象。

       thisValue    可选。传递给函数的值一般用‘this’值。如果这个参数为空,‘undefined’会传递给‘this’值。

 

另外一种简单的方法是,给split()传递一个正则表达式。

  var fruits=listStr.split(/\s*,\s*/);

  \s----一个单个的空白字符

  *------匹配0次或多次

posted @ 2018-06-02 14:38  聂小恶  阅读(1567)  评论(0编辑  收藏  举报