2011-09-26 51 views
-1
>> "aaaaaafbfbfsjjseew".scan(/(.)/) 
=> [["a"], ["a"], ["a"], ["a"], ["a"], ["a"], ["f"], ["b"], ["f"], ["b"], ["f"], ["s"], ["j"], ["j"], ["s"], ["e"], ["e"], ["w"]] 


>> "aaaaaafbfbfsjjseew".scan(/((.))/) 
=> [["a", "a"], ["a", "a"], ["a", "a"], ["a", "a"], ["a", "a"], ["a", "a"], ["f", "f"], ["b", "b"], ["f", "f"], ["b", "b"], ["f", "f"], ["s", "s"], ["j", "j"], ["j", "j"], ["s", "s"], ["e", "e"], ["e", "e"], ["w", "w"]] 

>> "aaaaaafbfbfsjjseew".scan(/((.)\2*)/) 
=> [["aaaaaa", "a"], ["f", "f"], ["b", "b"], ["f", "f"], ["b", "b"], ["f", "f"], ["s", "s"], ["jj", "j"], ["s", "s"], ["ee", "e"], ["w", "w"]] 


>> "aaaaaafbfbfsjjseew".scan(/((.)\1*)/) 
=> [["a", "a"], ["a", "a"], ["a", "a"], ["a", "a"], ["a", "a"], ["a", "a"], ["f", "f"], ["b", "b"], ["f", "f"], ["b", "b"], ["f", "f"], ["s", "s"], ["j", "j"], ["j", "j"], ["s", "s"], ["e", "e"], ["e", "e"], ["w", "w"]] 

>> "aaaaaafbfbfsjjseew".scan(/((.)\3*)/) 
=> [["a", "a"], ["a", "a"], ["a", "a"], ["a", "a"], ["a", "a"], ["a", "a"], ["f", "f"], ["b", "b"], ["f", "f"], ["b", "b"], ["f", "f"], ["s", "s"], ["j", "j"], ["j", "j"], ["s", "s"], ["e", "e"], ["e", "e"], ["w", "w"]] 

回答

8

fine manual

str.scan(模式)→陣列
[...]
如果圖案包含基團,每個獨立的結果是本身含有一個條目的陣列每組。

這一個:

"aaaaaafbfbfsjjseew".scan(/(.)/) 

擁有一批這樣就可以獲得一個數組的數組:每個單獨的結果是一個單一元件陣列。

下一個:

"aaaaaafbfbfsjjseew".scan(/((.))/) 

有兩組碰巧具有相同的值,所以你得到你的個人結果陣列兩個相同的元素。

第三個:

"aaaaaafbfbfsjjseew".scan(/((.)\2*)/) 

又包含了兩個組,但是也包含了向後引用內部組,以便外組(AKA第一組)狼吞虎嚥重複,你會得到["aaaaaa", "a"]["jj", "j"],和["ee", "e"]

第四之一:

"aaaaaafbfbfsjjseew".scan(/((.)\1*)/) 

只是試圖將向後引用切換到外組,但\1沒有內部組1中所定義,從而它相當於/((.))/

第五之一:

"aaaaaafbfbfsjjseew".scan(/((.)\3*)/) 

嘗試指不存在的組(第3組時僅存在兩個基團),從而它表現一樣/((.))/

+0

+1爲「精細手冊」(當然你的解釋) – stema

+0

@stema:這是我最喜歡的方式來打開一個答案:) –

0

"aaaaaafbfbfsjjseew".scan(/(.)/)表示可以將字符串拆分爲單獨的字符串數組。

這裏的括號表明它是一個數組,並且括號中的. -symbol表示該單個數組字符中的字符數。

如果我們寫爲假設"hellovenkat".scan(/(...)/),這個結果 [["hel"],["lov"],["enk"]]。它沒有給出最後一個索引,因爲它不能包含三個字符。

如果我們給"hello venkat".scan(/(...)/),結果如下。 Ans:[["hel"], ["lo "], ["ven"], ["kat"]]