2011-02-02 44 views
19
# (this give me list eg : ,s, s, m ... 
list = list + "," + name 

tôi muốn sử dụng phân chia và sau đó join ... cố gắng sử dụng below..i không biết những gì tôi đang làmcó thể chuyển đổi chuỗi thành mảng?

list = list.split(',') + name + collect{|c| c.name}.to_sentence 
list = list.split(',') + name + collect{|c| c.name}.Join(",") 

bất kỳ ý tưởng ??

+0

có thể hữu ích nếu bạn hiển thị các đầu vào và đầu ra mà bạn mong muốn. –

+0

vâng tôi biết điều này nhưng một khi tôi chuyển đổi chuỗi chia sau đó tôi muốn thêm một chuỗi vào nó và sau đó muốn chuyển đổi thành mảng bằng cách sử dụng tham gia – user557657

+0

"Thật khó để nói những gì đang được hỏi ở đây. Câu hỏi này là mơ hồ, mơ hồ, không đầy đủ, quá rộng, hoặc hùng biện và không thể được trả lời hợp lý ở dạng hiện tại của nó. " –

Trả lời

19

tôi không hiểu câu hỏi của bạn, nhưng nếu bạn muốn chuyển đổi chuỗi mảng

>> "a string".split("") 
=> ["a", " ", "s", "t", "r", "i", "n", "g"] 
+0

vâng tôi biết điều này nhưng một khi tôi chuyển đổi chuỗi chia sau đó tôi muốn thêm một chuỗi vào nó và sau đó muốn chuyển đổi thành mảng sử dụng tham gia – user557657

+0

bạn nên cung cấp ví dụ về những gì bạn muốn làm. Tôi không thể hình dung những gì bạn đang nói. – kurumi

+0

"sau đó muốn chuyển đổi thành mảng bằng cách sử dụng tham gia" Điều này không có ý nghĩa. Bạn không thể chuyển đổi một chuỗi thành một mảng bằng cách sử dụng tham gia. –

4
str = "a,b,c" 
list = str.split(/,/) # => ["a", "b", "c"] 
list.join("-") # => "a-b-c" 

Từ nhận xét của bạn, có vẻ như bạn muốn cũng để nối thêm một chuỗi (hoặc một vài dây) vào danh sách và sau đó tham gia lại vào chuỗi khác. Có lẽ như thế này:

(str.split(/,/) << 'd').join(',') # => "a,b,c,d" 
list2 = ['d', 'e', 'f'] 
(str.split(/,/) << list2).join(',') # => "a,b,c,d,e,f" 

của Ruby cú pháp cũng cho phép gọi các nhà khai thác với "chấm" ký hiệu, vì vậy điều này có thể làm sáng tỏ tình hình:

str.split(/,/).<<('d').join(',') # => "a,b,c,d" 
str.split(/,/).<<(list2).join(',') # => "a,b,c,d,e,f" 
+0

str = "a, b, c" bây giờ chúng ta chia đường và kết quả là ["a", "b", "c"]. Bây giờ tôi muốn thêm một chuỗi vào str (sau khi tách) sau đó muốn tham gia str + string bằng cách sử dụng tham gia (",") ????? – user557657

+0

@user - xem câu trả lời cập nhật của tôi, hy vọng điều này sẽ giúp ích. – maerics

0

Nếu bạn đang cố gắng để có "danh sách" của bạn là một biểu diễn chuỗi của một tập hợp các tên và bạn muốn thêm một tên vào đó (cũng là một chuỗi) được phân tách từ phần còn lại bởi (ví dụ) dấu phẩy và có kết quả là một chuỗi, tất cả những gì bạn cần là nối chuỗi:

list + ',' + name 

Một cách đẹp hơn để làm điều này, ít nhất là với tôi, là chuỗi suy:

"#{list},#{name}" 

Điều này làm cho nó rõ ràng rằng bạn đang thao tác dữ liệu để định dạng nó.

Tuy nhiên, nếu bạn muốn có "danh sách" của bạn chuyển đổi sang một mảng bằng cách chia nó bằng dấu phẩy và thêm các biến tên đến cùng, câu trả lời là về cơ bản giống nhau, với String#split và mảng nối:

list.split(',') + name 

Hy vọng rằng một trong hai giải pháp này là giải pháp cho vấn đề của bạn!

0

Tôi nghĩ rằng vấn đề lớn là bạn đang cố gắng sử dụng một chuỗi, khi bạn thực sự nên sử dụng một mảng. Vấn đề thứ hai là bạn đang bối rối một chuỗi được phân cách bằng dấu phẩy với một mảng hoặc danh sách.

Trong Ruby, danh sách và mảng là các đối tượng khác với chuỗi. Các chuỗi là tốt để lưu trữ văn bản và đôi khi dữ liệu nhị phân.

Mảng tốt để lưu trữ chuỗi dữ liệu, nơi bạn cần để có thể truy cập chúng theo chỉ mục bằng số. Hàng đợi và ngăn xếp thường được viết trên đầu trang của mảng, bởi vì mảng làm cho nó dễ dàng để thêm và loại bỏ các yếu tố từ đầu hoặc cuối.

Vì mục đích của bạn, tôi khuyên bạn nên sử dụng đối tượng mảng, sau đó join(',') mảng khi bạn cần biểu diễn chuỗi.

ary = []  #=> [] 
ary << 'item 1' #=> ["item 1"] 
ary << 'item 2' #=> ["item 1", "item 2"] 
ary.join(',') #=> "item 1,item 2" 
1
str = "a,b,c" 
=> "a,b,c" 

array = str.split(/,/) 
=> ["a", "b", "c"] 

# add more elements to the str: 

str << ',x,y,z' 
=> "a,b,c,x,y,z" 

array2 = str.split(/,/) 
=> ["a", "b", "c", "x", "y", "z"] 

nhưng có lẽ bạn muốn một cái gì đó như thế này (chuỗi đầu vào quá trình và lắp ráp chúng vào một mảng):

array = [] 
str = "a,b,c" 
array << str.split(/,/) 
    => [["a", "b", "c"]] 

str = 'x,y,z' 
array << str.split(/,/) 
=> [["a", "b", "c"], ["x", "y", "z"]] 

array.flatten! 
=> ["a", "b", "c", "x", "y", "z"] 
27

tôi nhận thấy rằng trang này đi lên cho tìm kiếm google chung của "chuỗi để char mảng ruby ​​".

Nếu bạn chỉ muốn chuyển đổi chuỗi để char mảng trong ruby,

"string".chars

+1

ngắn và ngọt, chỉ cần những gì tôi cần – Joseph

Các vấn đề liên quan