2013-10-15 1 views
1

나는 다음과 같은 형식 중 하나로 URL을 받고있을 것입니다 : 즉, 특수 문자 및 숫자의url에서 params를 가져 와서 알파벳 이외의 문자와 숫자를 제거 하시겠습니까?

- ?M=Foo bar 
- ?M=Foo%20bar 
- ?M=%20Foo_bar 
- ?M=Foo bar? 
- ?M=F00_bar 
- ?M=Foo#1bar_do 

또는 조합을.

단순히

params[:M] 

문제 사용하여 값을 가져올 수 있습니다 :

m = FooBar 
: 지금 내가 출력을 변환과 같은 변수 'm'에 저장하려면,

을하지만,

1) 여기서 다른 모든 문자 (밑줄) _, # 1, 공백,? 등) 및 숫자는 무시하고 알파벳 만 사용하십시오.

2) 같은 것을 형성하는 결과를 결합 :

FooBar 
FooBarDo 

내가 그렇게 정규 표현식에 좋지 않은 걸, 난 정말 그 일이

+0

몇 가지 입출력 예를 추가하십시오. 그렇지 않으면 원하는 것을 이해하기 어렵습니다. 현재의 예제는 아무 것도 설명하지 않습니다. –

답변

2

다음은 한 가지 방법을 해결하기 위해 어떤 도움을 주셔서 감사합니다 귀하의 경우, 그래서 scan

m = "Foo%20bar" 
m.scan(/[A-Za-z]/).join #=> Foobar 

m = "Foo#1bar_do" 
m.scan(/[A-Za-z]/).join #=> Foobardo 

m = "F00_bar" 
m.scan(/[A-Za-z]/).join #=> Fbar 

를 사용하여이 유사한 것을 사용하는 것입니다 :

당신이 정규식에 대한 자세한 내용은 좋아하면
params[:M].scan(/[A-Za-z]/).join 
1

확인이,

m.scan(/[a-z]+/i).join 

>> m = "Foo bar" 
=> "Foo bar" 
>> m.scan(/[a-z]+/i).join 
=> "Foobar" 
>> m = "Foo%20bar" 
=> "Foo%20bar" 
>> m.scan(/[a-z]+/i).join 
=> "Foobar" 
>> m = "%20Foo_bar" 
=> "%20Foo_bar" 
>> m.scan(/[a-z]+/i).join 
=> "Foobar" 
>> m = "Foo bar?" 
=> "Foo bar?" 
>> m.scan(/[a-z]+/i).join 
=> "Foobar" 
>> m = "F00_bar" 
=> "F00_bar" 
>> m.scan(/[a-z]+/i).join 
=> "Fbar" 
>> m = "Foo#1bar_do" 
=> "Foo#1bar_do" 
>> m.scan(/[a-z]+/i).join 
=> "Foobardo" 
0

내가보기 엔 http://rubular.com/을 확인하는 것이 좋습니다. 그것은 정규식과 일치하는 문자열을 가지고 놀 수 있습니다.

다른 답변도 좋지만 gsub도 사용할 수 있습니다.

"Foo#1bar_do".gsub(/\p{^Alpha}/, "") #=> "Foobardo" 
"Foo%20bar".gsub(/\p{^Alpha}/, "") #=> "Foobar" 
관련 문제