在反斜杠上拆分 ruby 中的双引号字符串

split a double quoted string in ruby on a backslash

我需要用反斜杠分割一个字符串,问题是当我在 de string 中有类似 '\n' 的东西时,它无法被识别。我发现发生这种情况是因为双引号字符串将 \n 解释为换行符。

例子

irb(main):109:0> 'testestet\nehcucahu'.split('\')
=> ["testestet", "nehcucahu"] # <---- this is what I want
irb(main):110:0> "testestet\nehcucahu".split('\')
=> ["testestet\nehcucahu"]

我可以在调用 split 之前将双引号字符串转换为单引号字符串吗?或者还有其他方法可以实现所需的行为?

编辑

进一步的工作告诉我,magento 会为街道上的每一行插入一个“\n”,这更有意义。我可以使用 .split(/\n/) 在这种特定情况下拆分它。如果您需要在反斜杠处拆分,下面的评论有更好的信息

这是关于单引号与双引号的字符串。

你在评论中提到的字符串a.street,我称之为

str = "rua rua urua\nhuhuhucuhch"

在偏移量 12 处包含换行符:

str.index("\n") => 12

并且不包含反斜杠:

str.index("\") #=> nil

所以你不能用反斜杠分割。

如果这个字符串被单引号括起来(就像你问题中的字符串一样):

str = 'rua rua urua\nhuhuhucuhch'
str.split("\") #=> ["rua rua urua", "nhuhuhucuhch"]`.

那是因为 str 现在包含一个反斜杠,后跟一个 "n",但没有换行符:

str.index("\") #=> 12 
str.index("n")  #=> 13 
str.index("\n") #=> nil 

能不能先换行再拆分?

str.gsub(/\n/,"\n").split(/\/)