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

时间:2015-02-18 23:19:43

标签: ruby string magento

我需要用反斜杠拆分字符串,问题是当我在de string中有'\ n'之类的东西时,它无法识别。我发现这是因为双引号字符串将\ n解释为新行char。

例如

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 /)在这种特定情况下拆分它。如果你需要以反斜杠分割

,下面的评论有更好的信息

2 个答案:

答案 0 :(得分:2)

您可以先替换换行符然后拆分吗?

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

答案 1 :(得分:1)

这是关于单引号和双引号字符串的全部内容。

您在评论中提到的字符串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