在反斜杠上拆分 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(/\/)
我需要用反斜杠分割一个字符串,问题是当我在 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(/\/)