Как преобразовать массив в строковый массив?

#ruby

Вопрос:

Здесь у меня есть подобный код ruby для преобразования массивов в строковый массив, а также я заметил, что разница между put и print/p и тем, и другим или дает разные выходные данные

 a= ["ruby"]
print a.to_s
 

выход:

 "["ruby"]"
 

Но нужно так, когда я использую print/p, а класс должен быть строковым

 "["ruby"]"  or '["ruby"]'
 

Комментарии:

1. Похоже, вы занимаетесь какой-то сериализацией. Зачем вам нужна такая строка? Может быть, есть лучший способ решить эту проблему.

2. мне нужен этот строковый массив для оценки в одном из моих кодов ruby

3. @Bharath : Что такое строковый массив ?

4. его ничего, кроме массива, в строковом формате. Я думаю, вам нужно посмотреть на ответ @sumak, который приведен ниже

5. @Bharath как вы оцениваете строку в своем коде?

Ответ №1:

Попробуйте это

 "'#{['ruby','othersElements'].join("', '")}'"
 

Где», » — разделитель элементов

 .join("', '")
 

Комментарии:

1. я становлюсь таким 'ruby', 'othersElements' , но в твоем случае я должен стать таким "['ruby', 'othersElements']"

Ответ №2:

Тебе просто нужно to_s . Его вывод совместим с eval (при условии, что элементы могут быть сериализованы сами с to_s собой):

 string = ["a", "b", "c"].to_s
=> "["a", "b", "c"]"

rebuilt = eval string
=> ["a", "b", "c"]

rebuilt.class
=> Array

rebuilt[0].class
=> String
 

Ответ №3:

Если вы согласны с одинарными кавычками вместо двойных кавычек:

 array = ['ruby', 'is', 'cool']

"['#{array.join("', '")}']"
# => "['ruby', 'is', 'cool']"


# You can then define you own method:
def puts_array(array)
  puts "['#{array.join("', '")}']"
end

# Or overwrite Array#to_s method
class Array
  def to_s
    "['#{self.join("', '")}']"
  end
end

puts_array(array)
# => "['ruby', 'is', 'cool']"
puts array.to_s
# => "['ruby', 'is', 'cool']"
 

Комментарии:

1. Мне нужна еще одна помощь, как то же самое сделать для {"make" => "tata", "year" => "2006"} ожидаемого результата хэша "{"make" => "tata", "year" => "2006"}"

2. откройте новый вопрос, и мы ответим