문제

매우 있습니다 비슷한 질문 이미. 솔루션 중 하나는 다음과 같은 코드를 사용합니다.

string.mb_chars.normalize(:kd).gsub(/[^x00-\x7F]/n, '').to_s

공백, 점, 대시 및 다른 것을 아는 사람을 제거 할 때까지 놀라운 일이 있습니다.

첫 번째 코드가 어떻게 작동하는지 잘 모르겠지만 스트라이프로 만들 수 있습니다. 신문? 아니면 최소한 보존 할 숯 목록이 주어 졌습니까? Regexps에 대한 나의 지식은 작지만, 나는 (아무 소용이 없다) 시도했다.

/[^\-x00-\x7F]/n # So it would leave the dash alone

나는 다음과 같은 일을하려고합니다.

string.mb_chars.normalize(:kd).gsub('-', '__DASH__').gsub
  (/[^x00-\x7F]/n, '').gsub('__DASH__', '-').to_s

극악한? 예...

나는 또한 시도했다 :

iconv = Iconv.new('UTF-8', 'US-ASCII//TRANSLIT') # Also tried ISO-8859-1
iconv.iconv 'Café' # Throws an error: Iconv::IllegalSequence: "é"

도와주세요?

도움이 되었습니까?

해결책

또한 공간, 점, 대시 및 다른 것을 알고있는 사람도 제거합니다.

그것은 안됩니다.

string.mb_chars.normalize(:kd).gsub(/[^x00-\x7F]/n, '').to_s

당신은 X00 이전에 NUL 특성을 언급하기 위해 뒷선시가 있어야합니다.

/[^\-x00-\x7F]/n # So it would leave the dash alone

''와 'x'사이에 '-'를 넣으면 널 문자에 대한 참조를 깨고 범위를 깨뜨립니다.

다른 팁

나는 그것을 사용할 것이다 transliterate 방법. 보다 http://api.rubyonrails.org/classes/activesupport/inflector.html#method-i-transliterate

그것은 iconv만큼 깔끔하지는 않지만 당신이 원하는 것을합니다.

http://snippets.dzone.com/posts/show/2384

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top