如何删除字符串中的第二个AMPERSAND?

时间:2016-10-12 12:54:52

标签: ruby-on-rails ruby

1.如何从跟随字符串中删除第二个AMPERSAND? “苹果&安培;香蕉&安培;葡萄&安培;苹果”

2.如何在第二个AMPERSAND中拆分字符串以跟随字符串?我想忽略第一个AMPERSAND并从第二个AMPERSAND开始分裂。 “苹果&安培;香蕉&安培;葡萄&安培;苹果”

3 个答案:

答案 0 :(得分:1)

arr = "apple&banana&grape&apple".split('&')
#arr = ["apple", "banana", "grape", "apple"]

要解决第一个查询,

arr[0..1].join('&').concat(arr[2..-1].join('&'))
# "apple&bananagrape&apple" 

对于第二个查询,

[words[0..1].join('&'), words[2..-1]].flatten
#["apple&banana", "grape", "apple"] 

答案 1 :(得分:0)

您可以将gsub与块一起使用:

对于你的第一个案例:

 index_to_remove = 2 
 current_index = 0
 my_string = "apple&banana&grape&apple"
 my_string.gsub('&') { |x| current_index += 1; current_index == index_to_remove ? '' : x} 
#=> "apple&bananagrape&apple"

对于你的第二种情况,你可以更换第二种情况。具有独特的价值并分为:

index_to_split = 2 
current_index = 0
my_string = "apple&banana&grape&apple"
my_string.gsub!('&') { |x| current_index += 1; current_index == index_to_split ? '&&' : x}
my_string.split('&&')
#=> ["apple&banana", "grape&apple"]

答案 2 :(得分:0)

如果你用&分割字符串,重新加入前两个/后两个并转换回字符串或数组非常简单:

words = "apple&banana&grape&apple".split('&')

# First query
words[0..1].join('&') + words[2..-1].join('&')
# Giving you: "apple&bananagrape&apple"

# Second query
[words[0..1].join('&'), words[2..-1].join('&')]
# Giving you: ["apple&banana", "grape&apple"]

您可以根据需要为不同长度的字符串和分隔符调整此值。

我认为使用正则表达式匹配器有一个很好的解决方案,但我对它们不太热,所以希望这在某种程度上有所帮助!