@ 및 &과 같은 특정 ASCII 문자를 URL의 40 및 26 각각에 대한 16 진수 표시로 바꿔야합니다.Ruby : ascii 범위의 특정 문자를 16 진수 표현으로 바꾸십시오.
어떻게 이것을 루비에서 할 수 있습니까? 교체 할 필요가없는 '-'와 같은 문자가 있습니다.
@ 및 &과 같은 특정 ASCII 문자를 URL의 40 및 26 각각에 대한 16 진수 표시로 바꿔야합니다.Ruby : ascii 범위의 특정 문자를 16 진수 표현으로 바꾸십시오.
어떻게 이것을 루비에서 할 수 있습니까? 교체 할 필요가없는 '-'와 같은 문자가 있습니다.
require 'uri'
URI.escape str, /[@&]/
분명히, 당신은 당신이 탈출하고 싶은 더 많은 문자로 정규 표현식을 넓힐 수 있습니다. 허용 된 접근 방식을 원할 경우
URI.escape str, /[^-\w]/
Ruby에는 URL 용으로이 기능이 내장되어 있습니다. 위의 코드에서 출력
h%40llo%20world
것, t
부터 매핑을 정의하는 해시입니다
s = "[email protected] world"
t = { " " => "%20", "@" => "%40" };
puts s.split(//).map { |c| t[c] || c }.join
: 당신이 좀 더 일반적인 번역 기능을 정의하려는 경우, 다음과 같은 코드를 사용할 수있다 특정 문자를 표시합니다. 문자열은 문자로 분리되고 해시는 각 문자의 해당 문자에 대해 검색됩니다.
이것은 루비이므로 20 가지 방법이 있습니다. 여기에 내는 다음과 같습니다
>> a = 'one&two%three'
=> "one&two%three"
>> a.gsub(/[&%]/, '&' => '&'.ord, '%' => '%'.ord)
=> "one38two37three"
더 일반적으로 쉽게 :
require 'uri'
URI.escape(your_string,Regexp.new("[^#{URI::PATTERN::UNRESERVED}]")
니스! Ruby의 gsub()이 해시 매개 변수를 지원하는지 알지 못했습니다. TMTOWTDI :) – nimrodm