我需要用反斜杠拆分字符串,问题是当我在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 /)在这种特定情况下拆分它。如果你需要以反斜杠分割
,下面的评论有更好的信息答案 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