반응형
Ruby의 문자열에서 특정 문자를 삭제하는 방법은 무엇입니까?
다음과 같은 여러 문자열이 있습니다.
"((String1))"
그들은 모두 길이가 다릅니다. 루프의 모든 문자열에서 괄호를 어떻게 제거 할 수 있습니까?
다음을 사용하여 다음을 수행하십시오 String#tr
.
"((String1))".tr('()', '')
# => "String1"
처음 두 문자와 마지막 두 문자 만 제거하려는 경우 문자열에 음수 인덱스 를 사용할 수 있습니다 .
s = "((String1))"
s = s[2...-2]
p s # => "String1"
문자열에서 모든 괄호를 제거 하려면 문자열 클래스 에서 delete 메서드를 사용할 수 있습니다 .
s = "((String1))"
s.delete! '()'
p s # => "String1"
String#gsub
정규 표현식과 함께 사용 :
"((String1))".gsub(/^\(+|\)+$/, '')
# => "String1"
"(((((( parentheses )))".gsub(/^\(+|\)+$/, '')
# => " parentheses "
이렇게하면 주변 괄호 만 제거됩니다.
"(((((( This (is) string )))".gsub(/^\(+|\)+$/, '')
# => " This (is) string "
사람들이 건너오고 성능을 찾고 들어, 모양 #delete
및 #tr
2-4X보다 빠른 속도에서 같은 약이다 gsub
.
text = "Here is a string with / some forwa/rd slashes"
tr = Benchmark.measure { 10000.times { text.tr('/', '') } }
# tr.total => 0.01
delete = Benchmark.measure { 10000.times { text.delete('/') } }
# delete.total => 0.01
gsub = Benchmark.measure { 10000.times { text.gsub('/', '') } }
# gsub.total => 0.02 - 0.04
이를 달성하는 더 짧은 방법은 다음과 같습니다.
1) 사용 Negative character class pattern matching
irb(main)> "((String1))"[/[^()]+/]
=> "String1"
^
-캐릭터 클래스에없는 항목과 일치합니다. charachter 클래스 내부에서, 우리가 (
하고)
또는 다른 사람들이 언급 한 것처럼 전역 대체 "AKA : gsub"를 사용합니다.
irb(main)> "((String1))".gsub(/[)(]/, '')
=> "String1"
참고 URL : https://stackoverflow.com/questions/19637677/how-to-delete-specific-characters-from-a-string-in-ruby
반응형
'IT TIP' 카테고리의 다른 글
안전 모드에서 mysql 삭제 (0) | 2020.10.22 |
---|---|
Angular2-HTTP RequestOptions 헤더 (0) | 2020.10.22 |
Angular를 두 번 이상로드하려고했습니다. (0) | 2020.10.22 |
C # 및 Java에 "null"이있는 이유는 무엇입니까? (0) | 2020.10.22 |
xmlserializer가 일반 xml 만 직렬화하도록하려면 어떻게해야합니까? (0) | 2020.10.22 |