从字符串提取一个列表
其实这一节,重点是要复习一下字符串的操作
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次或多次