2011-04-28 4 views

답변

1
require 'uri' 
URI.escape str, /[@&]/ 

분명히, 당신은 당신이 탈출하고 싶은 더 많은 문자로 정규 표현식을 넓힐 수 있습니다. 허용 된 접근 방식을 원할 경우

URI.escape str, /[^-\w]/ 
0

Ruby에는 URL 용으로이 기능이 내장되어 있습니다. 위의 코드에서 출력

h%40llo%20world 

것, t부터 매핑을 정의하는 해시입니다

s = "[email protected] world" 
t = { " " => "%20", "@" => "%40" }; 
puts s.split(//).map { |c| t[c] || c }.join 

: 당신이 좀 더 일반적인 번역 기능을 정의하려는 경우, 다음과 같은 코드를 사용할 수있다 특정 문자를 표시합니다. 문자열은 문자로 분리되고 해시는 각 문자의 해당 문자에 대해 검색됩니다.

1

이것은 루비이므로 20 가지 방법이 있습니다. 여기에 내는 다음과 같습니다

>> a = 'one&two%three'             
=> "one&two%three"              
>> a.gsub(/[&%]/, '&' => '&'.ord, '%' => '%'.ord)      
=> "one38two37three" 
+1

니스! Ruby의 gsub()이 해시 매개 변수를 지원하는지 알지 못했습니다. TMTOWTDI :) – nimrodm

0

더 일반적으로 쉽게 :

require 'uri' 
URI.escape(your_string,Regexp.new("[^#{URI::PATTERN::UNRESERVED}]") 
관련 문제