2011-11-18 31 views
1

假設我有串像下面的數組:重新組織的數組元素在我的情況

str_arr=["10$", "10$ I am a student","10$Good","10$ Nice weekend!"] 

我想重新組織的方式數組元素的值,在數組中的每個元素,如果有(有)之後10$標誌白色空間(一個或多個),然後,用以下單詞結合10$

正在生成類似以下的新數組:

str_arr=["10$", "10$I am a student","10$Good","10$Nice weekend!"] 

我試圖做的是類似以下內容:

str_arra.map{|elem| 
    # not sure how to do here, 
    #split and check then combine again? 
     if elem.size>1 
     words=elem.split() 
     if words[0]=='10$' 
      #not sure how to do here 
     end 
     elsif elem.size==1 
     elem 
     end 


} 

但不知道如何生成新的數組...和代碼上面顯得冗長...

PS很可能有多的空格10$後,然後是一個字

回答

1

如果你只有這種情況下,下面應該做的伎倆:

["$ abc", "$str"].map {|v, k| v.sub(/\$ +/, '$')} 

下面是一個例子:http://codepad.org/XHeo7E8B

+0

但它也有可能是有多重$ sign之後的空白空間 – Mellon

+0

是的,這可能會導致崩潰 – apneadiving

+0

@Mellon我已修復代碼以適用於多個空間 - 您應該指定具體的數據類型(您稱爲「空白區域」)。 – deviousdodo

1

這樣做:

str_arra.map{|elem| elem.gsub(/^\$ /, "$") }