1. 다음 문장에서 두 번째 AMPERSAND를 제거 하시겠습니까? "사과 & 바나나 & 포도 & 사과"문자열에서 두 번째 AMPERSAND를 제거하는 방법은 무엇입니까?
2.how 문자열을 다음과 같은 사항에 대해 두 번째 앰퍼샌드에서 문자열을 분할? 나는 첫번째 AMPERSAND를 무시하고 두번째 AMPERSAND 이후로 나누고 싶다. "사과 & 바나나 & 포도 & 사과"
1. 다음 문장에서 두 번째 AMPERSAND를 제거 하시겠습니까? "사과 & 바나나 & 포도 & 사과"문자열에서 두 번째 AMPERSAND를 제거하는 방법은 무엇입니까?
2.how 문자열을 다음과 같은 사항에 대해 두 번째 앰퍼샌드에서 문자열을 분할? 나는 첫번째 AMPERSAND를 무시하고 두번째 AMPERSAND 이후로 나누고 싶다. "사과 & 바나나 & 포도 & 사과"
당신은 블록으로 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"]
&
로 문자열을 분할하는 경우
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"]
시도하고 최적화하는 내 대답을 삭제하고 두 번째 쿼리에 대한 내 코드와 동일하게 업데이트 된 것을 볼 수 있습니다 :) 실제로 처음에는 '나머지'를 사용하여 처음 생각했습니다 ... 원래의 더 나은 대답을 생각하지 않습니까? 두 번째 쿼리 @pramod? 아마도 @harsha 명확하게 수 있습니까? – SRack
@srack 나는 좀 더 일반적인 답을주기 위해 수정하려고했다. 우리가 세 번째'&'에서 분리하고 싶다고 가정하면, 원래의 대답으로 세 가지 변수가 생길 것입니다. @ harsha-vardhan-reddy 두 번째 쿼리에 답하도록 해결책을 수정하십시오. – Pramod
그래서 제가 드로잉 보드로 돌아간 것입니다. 현재의 대답이 두 번째 쿼리에 올바르게 응답하지 않았고, 현재 상태로되어있는 것입니다. 곧 찾아야합니다 :) – SRack
, 그것은 처음 두/마지막 두 다시 가입하고 다시 변환하는 것은 매우 간단합니다 문자열 또는 배열로 바꾸기 :
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 및 구분 기호를 사용합니다.
정규식 matchers를 사용하는 좋은 해결책이 있다고 상상해 봅니다.하지만 너무 열정적이지 않으므로 어떤 점에서 도움이되기를 바랍니다.
나는 모든 앰퍼샌드에서 그것을 나눌 수 있고, 결과 배열의 첫 번째와 두 번째, 세 번째와 네 번째 요소를 다시 앰퍼샌드로 다시 결합 할 수 있다고 생각한다. –