【问题标题】:can convert string into array?可以将字符串转换为数组吗?
【发布时间】:2011-02-02 02:38:14
【问题描述】:
# (this give me list eg : ,s, s, m ...
list = list + "," + name

我想使用拆分然后加入...尝试在下面使用..我不知道我在做什么

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

有什么想法吗??

【问题讨论】:

  • 如果您显示您想要的输入和输出将会很有帮助。
  • 是的,我知道这一点,但是一旦我转换了拆分字符串,然后我想在其中添加另一个字符串,然后想使用 join 转换为数组
  • “很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或修辞,无法以目前的形式得到合理的回答。”
  • 谢谢,你还有什么想说的
  • 包含你想要做的事情的例子有那么难吗?

标签: ruby arrays string


【解决方案1】:

我注意到这个页面是针对“string to char array ruby​​”的通用谷歌搜索出现的。

如果你只是想在ruby中将字符串转换为char数组,

"string".chars
# ["s", "t", "r", "i", "n", "g"]

【讨论】:

  • 又短又甜,正是我所需要的
【解决方案2】:

我不明白你的问题,但如果你想将字符串转换为数组

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

【讨论】:

  • 是的,我知道这一点,但是一旦我转换了拆分字符串,然后我想在其中添加另一个字符串,然后想使用 join 转换为数组
  • 你应该提供你想做什么的例子。我无法想象你在说什么。
  • "然后想使用 join 转换成数组" 这没有意义。不能使用 join 将字符串转换为数组。
【解决方案3】:
str = "a,b,c"
list = str.split(/,/) # => ["a", "b", "c"]
list.join("-") # => "a-b-c"

根据您的评论,您似乎还想将一个字符串(或多个字符串)附加到列表中,然后重新加入另一个字符串。可能是这样的:

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

Ruby 语法还允许使用“点”表示法调用运算符,因此这可能会澄清这种情况:

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

【讨论】:

  • str = "a,b,c" 现在我们拆分 str 并且结果是 ["a", "b","c"]。现在我想将一个字符串添加到 str(拆分后)然后想加入 str +string 使用 join(",") ?????
【解决方案4】:
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"] 

但您可能想要这样的东西(处理输入字符串并将它们组合成一个数组):

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"] 

【讨论】:

    【解决方案5】:

    如果您试图让您的“列表”成为名称集合的字符串表示形式,并且您想向该名称(也是一个字符串)添加一个名称(也是一个字符串),并用(例如)逗号与其余部分分隔,并且让结果是一个字符串,你所需要的只是字符串连接:

    list + ',' + name
    

    至少对我而言,更好的方法是字符串插值:

    "#{list},#{name}"
    

    这使您更清楚地知道您正在处理数据以对其进行格式化。

    但是,如果您想通过用逗号将“列表”转换为数组并将名称变量添加到末尾,则答案基本相同,String#split 和数组连接:

    list.split(',') + name
    

    希望这两个中的一个可以解决您的问题!

    【讨论】:

      【解决方案6】:

      我认为最大的问题是您尝试使用字符串,而实际上您应该使用数组。第二个问题是您将逗号分隔的字符串与数组或列表混淆了。

      在 Ruby 中,列表和数组是不同于字符串的对象。字符串非常适合存储文本,有时也适合存储二进制数据。

      数组非常适合存储数据序列,您需要能够通过数字索引访问它们。队列和栈一般写在数组之上,因为数组可以很容易地从头或尾添加和删除元素。

      出于您的目的,我建议您使用 Array 对象,然后在需要字符串表示时使用 join(',') 数组。

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

      【讨论】:

        【解决方案7】:

        别忘了scan

        在我的情况下,我有一个真正的朋友代码,一个“大”整数(8 位),为了更好的可读性,我想每 2 位添加破折号:

        friend_code.scan(/../).join("-")
        

        你的解决方案是

        friend_code.scan(/./).join(",") 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-02-09
          • 2021-02-05
          • 1970-01-01
          • 2023-04-01
          • 1970-01-01
          • 2011-02-10
          • 1970-01-01
          相关资源
          最近更新 更多