문자열에서 하위 문자열 제거
다른 문자열에서 문자열을 제거하는 방법이 있는지 궁금합니다.이와 같은 것:
class String
def remove(s)
self[s.length, self.length - s.length]
end
end
슬라이스 방법을 사용할 수 있습니다.
a = "foobar"
a.slice! "foo"
=> "foo"
a
=> "bar"
'!' 버전이 아닌 버전도 있습니다.다른 버전에 대한 자세한 내용은 설명서에서도 확인할 수 있습니다. http://www.ruby-doc.org/core/classes/String.html#method-i-slice-21
어때.str.gsub("subString", "")
Ruby Doc 확인하기
문자열의 끝인 경우 다음을 사용할 수도 있습니다.
"hello".chomp("llo") #=> "he"
루비 2.5+
하위 문자열이 문자열의 끝에 있는 경우, Ruby 2.5는 이를 위한 방법을 도입했습니다.
- delete_substring을 문자열의 시작 부분에서 제거하기 위해 사용합니다.
- delete_substring을 문자열 끝에서 제거하기 위한 명령어
대상 문자열이 하나만 있는 경우 다음을 사용할 수 있습니다.
str[target] = ''
또는
str.sub(target, '')
대상이 여러 번 발생하는 경우 다음을(를 수행합니다.
str.gsub(target, '')
예를 들어:
asdf = 'foo bar'
asdf['bar'] = ''
asdf #=> "foo "
asdf = 'foo bar'
asdf.sub('bar', '') #=> "foo "
asdf = asdf + asdf #=> "foo barfoo bar"
asdf.gsub('bar', '') #=> "foo foo "
인플레이스 대체를 수행해야 하는 경우"!"
의 버전.gsub!
그리고.sub!
.
Rails를 사용하는 경우에도 마찬가지입니다.
예."Testmessage".remove("message")
수확량"Test"
.
경고: 이 메서드는 모든 항목을 제거합니다.
레일을 사용하거나 지원이 덜 활성화된 경우 String#remove 및 String#remove! 메서드를 사용할 수 있습니다.
def remove!(*patterns)
patterns.each do |pattern|
gsub! pattern, ""
end
self
end
출처: http://api.rubyonrails.org/classes/String.html#method-i-remove
만약 제가 올바르게 해석하고 있다면, 이 질문은 문자열 사이의 마이너스(-) 연산, 즉 내장된 플러스(+) 연산(연결)과 반대되는 연산을 요구하는 것 같습니다.
이전 답변과 달리 속성을 준수해야 하는 작업을 정의하려고 합니다.
if c = a + b 다음 c - a = b BAND c - b = a ▁a a
이를 위해 다음과 같은 세 가지 기본 제공 Ruby 방법만 필요합니다.
'abracadabra'.partition('abra').values_at(0,2).join == 'cadabra'
.
한 번에 한 가지 방법을 실행하면 쉽게 이해할 수 있기 때문에 어떻게 작동하는지 설명하지 않겠습니다.
개념 증명 코드는 다음과 같습니다.
# minus_string.rb
class String
def -(str)
partition(str).values_at(0,2).join
end
end
# Add the following code and issue 'ruby minus_string.rb' in the console to test
require 'minitest/autorun'
class MinusString_Test < MiniTest::Test
A,B,C='abra','cadabra','abracadabra'
def test_C_eq_A_plus_B
assert C == A + B
end
def test_C_minus_A_eq_B
assert C - A == B
end
def test_C_minus_B_eq_A
assert C - B == A
end
end
최신 Ruby 버전(>= 2.0)을 사용하는 경우 마지막으로 조언할 말이 있습니다. 이전 예와 같이 원숭이가 지정한 String 대신 Refinitions를 사용합니다.
이는 다음과 같이 쉽습니다.
module MinusString
refine String do
def -(str)
partition(str).values_at(0,2).join
end
end
end
추가using MinusString
당신이 필요로 하는 블록 앞에서.
제가 할 일은 이렇습니다.
2.2.1 :015 > class String; def remove!(start_index, end_index) (end_index - start_index + 1).times{ self.slice! start_index }; self end; end;
2.2.1 :016 > "idliketodeleteHEREallthewaytoHEREplease".remove! 14, 32
=> "idliketodeleteplease"
2.2.1 :017 > ":)".remove! 1,1
=> ":"
2.2.1 :018 > "ohnoe!".remove! 2,4
=> "oh!"
여러 줄로 포맷됨:
class String
def remove!(start_index, end_index)
(end_index - start_index + 1).times{ self.slice! start_index }
self
end
end
언급URL : https://stackoverflow.com/questions/5367164/remove-substring-from-the-string
'programing' 카테고리의 다른 글
.NET에서 소수점, 부동소수점 및 이중점의 차이는 무엇입니까? (0) | 2023.06.02 |
---|---|
Ruby를 사용하여 문자열이 기본적으로 따옴표의 정수인지 테스트하는 방법 (0) | 2023.06.02 |
스피너 선택 항목 텍스트를 가져오시겠습니까? (0) | 2023.06.02 |
왜 Ruby는 개인적인 방법과 보호된 방법을 모두 가지고 있습니까? (0) | 2023.06.02 |
사용 가능한 ID가 없음 - 관리자 요청 (0) | 2023.06.02 |