2016-10-12 16 views
1

1.次の文字列から2番目のアンパサンドを削除するには? 「りんご&バナナ&ブドウ&りんご」文字列の2番目のアンパサンドを削除する方法は?

2.how文字列を以下のための第二AMPERSANDで文字列を分割するには?私は最初のアンパサンドを無視し、2回目のアンパサンドから分割したいと思います。 「りんご&バナナ&ブドウ&りんご」

+0

私はすべてのアンパサンドでそれを分割して、結果の配列の最初と2番目と3番目と4番目の要素を再びアンパサンドで結合することができたと思います。 –

答えて

0

あなたはブロックでgsubを使用することができます。

あなたの最初のケースの場合:2番目のケースでは

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"] 
1
あなたは &で文字列を分割した場合
arr = "apple&banana&grape&apple".split('&') 
#arr = ["apple", "banana", "grape", "apple"] 

最初のクエリを解決するために、2番目のクエリのために

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

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

私の答えを削除して最適化しようとしたところ、2番目のクエリのコードと同じように更新されているのが分かります:)実際には、 'rest'を使って最初に正しいと思っていました...元のより良い答え2番目のクエリ@pramod?おそらく@harsha明確にすることができますか? – SRack

+0

@srack私はより一般的な答えを与えるために修正しようとしていました。私たちが3番目の '&'から分割したいのであれば、私の元の答えでは3つの変数があるとします。したがって、解決法を@ harsha-vardhan-reddyの2番目のクエリに変更しました。 – Pramod

+1

だからこそ私はドローイングボードに戻りました。私の現在の答えが2番目の質問に正しく答えることができず、あなたの(現在の状態で)あなたのことが気になりました!すぐに見つける必要があります:) – SRack

0

は、それは最初の2 /最後の二つに再参加して戻って変換するのは非常に簡単です文字列または配列に変換する:

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"] 

これは、さまざまな長さのstrin必要に応じてgsとセパレータを追加します。

私は正規表現マッチャーを使用して良い解決策があると思いますが、私はあまりにも暑いわけではないので、これが何らかの形で役立つことを願っています!

+0

注意深く2番目のクエリを読んでください。私は彼が最初の '&'を無視して、2番目以降に分割したいと思うと思う:) – Pramod

+1

それは私の考えであり、なぜ私は答えをクリアしたのか!他の誰もがこのソリューションを使っていたことに気づいたので、私はそれをポップアップして戻ってくると思っていました。今すぐあなたはそれが正しい解決策を持っていると思ってください。 +1あなたの... – SRack

関連する問題