2013-10-27 155 views
0

我想知道是否可以將字符串拆分爲多個不同長度的分區。我想此字符串例如拆分:ruby​​將字符串拆分成固定長度的多個字符串

string = "1 name lastname  234 washington city/NY" 

成四個子串,其中:

  • 第一分區爲具有第一2個字符("1 "
  • 第二分區 有後續15個字符("name lastname "
  • 第3個分區 需要後續6個字符("234 "
  • 4RD分區有 隨後的20個字符("washington city/NY"
+0

請向我們展示您的真實字符串以及您想要執行的操作。 –

+0

向我們展示您編寫的代碼,因爲您試圖自己解決這個問題。因爲它看起來像你要求我們爲你寫。 「詢問代碼的問題必須顯示對所解決問題的最低限度的理解,包括嘗試的解決方案,爲什麼他們不工作,以及預期的結果,另見:[Stack Overflow question checklist](http://meta.stackexchange。 com/questions/156810/stack-overflow-question-checklist)「 –

+0

以上是其實是真正的字符串:) – user2925006

回答

2

您只需通過索引做到這一點:

string[0,2] 
string[4,15] 
stirng[20,6] 
string[27,20] 
+0

上帝保佑你!不知道你可以這樣做。我以爲我不得不使用掃描或拆分方法,並且不知道如何結合正則表達式 – user2925006

+0

切片很酷:D –

+0

yeap,非常靈活 – user2925006

0

編寫Regexp並不難。 free-spacing mode可讓您在多行上編寫模式並支持註釋。下面是一個命名捕獲組的示例:

string = "1 name lastname  234 washington city/NY" 

pattern = /\A 
    (?<id>.{2}) # 2 charcters for the id 
    (?<name>.{20}) # 20 characters for the name 
    (?<zip>.{6}) # 6 characters for the zip code 
    (?<city>.+) # remaining characters for city and state 
\Z/x 

match = string.match(pattern) 
#=> #<MatchData "1 name lastname  234 washington city/NY" id:"1 " name:"name lastname  " zip:"234 " city:"washington city/NY"> 

match[:id] #=> "1 " 
match[:name] #=> "name lastname  " 
match[:zip] #=> "234 " 
match[:city] #=> "washington city/NY" 
+0

非常感謝,幫助更多! – user2925006

相關問題