其實這一節,重點是要復習一下字符串的操作
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次或多次