2 回答

TA貢獻1775條經(jīng)驗 獲得超11個贊
這個是將一串字符串轉(zhuǎn)化成數(shù)組的方法
(1) 在默認無參傳入的時候 ,是以空格為間隔 ,獲得數(shù)組
1 2 | pry(main)> " now's the time".split => ["now's", "the", "time"] |
(2) 如果接受一個字符參數(shù) ,那么會按照這個字符參數(shù)進行分割變成數(shù)組
1 2 | pry(main)> "mellow yellow".split("ello") => ["m", "w y", "w"] |
(3)如果接受的是兩個參數(shù) ,后面的參數(shù)是用來確定分割數(shù)組里面元素的個數(shù),如果在按規(guī)則分割的時候 剩下多余的就變成一個元素
1 2 | pry(main)> "mellow,yellow".split(//,4) => ["m", "e", "l", "low,yellow"] |
(4)當然split 參數(shù) 也接受正則表達式,如下
1 2 | pry(main)> "hi mom".split(%r{\s*}) => ["h", "i", "m", "o", "m"] |

TA貢獻1946條經(jīng)驗 獲得超4個贊
正如你所知道的,Ruby字符串被稱為一流的對象,它使用了大量的查詢和操作方法。一個最基本的字符串操作是把一個字符串分割成多個子字符串。如果你有一個字符串,如“foo, bar, baz”而你希望的是這樣三個字符串“foo”,“bar”,“baz”。那么字符串類的split方法就可以幫助你。
“split”的基本用法
Split方法的最基本用法分裂一個由單獨字符或字符的靜態(tài)序列組成的字符串。如果split的第一個變量是一個字符串,那么這個字符串中字符就會被當作一個字符串分隔符使用。但是在逗號分隔的數(shù)據(jù)中,逗號用來分隔數(shù)據(jù),這里的每個字符串成分都被用來分隔數(shù)據(jù)。
#!/usr/bin/env ruby
str = "foo,bar,baz"
puts str.split(",")
$ ./1.rb foo bar baz 通過正則表達式來增加靈活性
當然,還有一些更容易的方法可以分隔字符串。正則表達式可以為split方法增加靈活性。這里再次拿“foo, bar, baz”。間隔在第一個逗號之后而不是第二個逗號。如果該字符串“,”被當成是分隔符,那么在“baz”字符串的開始處仍然會存在間隔。如果使用“,”字符串,它只與第一個逗號匹配,因為第二個逗號后面沒有間隔。其作用還是有限的。
解決這個問題的辦法是把正則表達式作為定界符的自變量,而不是使用字符串。正則表達式不僅可以匹配靜態(tài)序列的字符,對字符的不定量和可選字符都同樣起作用。
編寫正則表達式
為你的分隔符編寫一個正則表達式,第一步就是描述清楚什么是分隔符。在這種情況下,一個逗號后面可能存在一個或多個空格是合理的。這一正則表達式庫中存在兩個要素:逗號和可選的間隔。間隔會使用* (星號)量詞,它表示的意思是“零或更多”。任何在它之前的要素都會匹配零次或若干次。例如,正則表達式/ a * /將匹配序列零或更多“a”字符。
#!/usr/bin/env ruby
str = "foo, bar,baz"
- 2 回答
- 0 關注
- 616 瀏覽
添加回答
舉報