[ruby] tr과 gsub의 차이점은 무엇입니까?

나는 루비 설명서를 읽고 있었다과의 차이와 혼동있어 gsub하고 tr. 둘의 차이점은 무엇입니까?



답변

tr단일 문자를 바꾸고 자 할 때 사용하십시오 .

tr정규 표현식을 통하지 않고 단일 문자 와 일치 하므로 문자는 첫 번째 문자열 인수에서 동일한 순서로 나타날 필요가 없습니다. 문자가 발견되면 두 번째 문자열 인수에서 동일한 색인에있는 문자로 대체됩니다.

'abcde'.tr('bda', '123')
#=> "31c2e"

'abcde'.tr('bcd', '123')
#=> "a123e"

사용 gsub정규 표현식을 사용 할 때 또는 더 긴 문자열을 교체 할 때 :

'abcde'.gsub(/bda/, '123')
#=> "abcde"

'abcde'.gsub(/b.d/, '123')
#=> "a123e"


답변

  • tr단일 문자를 단일 고정 문자로만 대체 할 수 있지만 (단일 tr호출 에 이러한 종류의 여러 일치 항목을 넣을 수는 있지만) 빠릅니다.
  • gsub정규 표현식을 사용하여 복잡한 패턴을 일치시키고 복잡한 계산 결과로 대체 할 수 있지만보다 느립니다 tr.

답변

trstr의 문자가에서 from_str의 해당 문자로 교체 된 사본을 반환합니다 to_str. 경우 to_str보다 짧은 from_str, 그것은 대응 관계를 유지하기 위해 마지막 문자로 채워집니다.
http://apidock.com/ruby/String/tr

gsubstr두 번째 인수로 대체 된 모든 패턴이 있는 사본을 리턴합니다 . 패턴은 일반적으로 Regexp입니다. 문자열로 주어지면, 포함 된 정규 표현식 메타 문자는 문자 그대로 해석 \d됩니다 . 예를 들어 d숫자 대신 백래시와 일치합니다 .
http://apidock.com/ruby/String/gsub


답변