나는 악센트를 잘 얻을 수있는 진짜 문제가 있어요, 나는 내 경우에는,이 대부분의 라틴어로 발생할 수 있습니다 생각, 포르투갈어루비 문자열 악센트 오류 : 눈을
내가 가진 문자열을 만나는 것보다 더 많은 것을 매개 변수로 와서 나는 첫 번째 문자를 가져와 그것을 upcase해야합니다! 루비에서는 사소한 문제가 발생하지만 여기 잡기가 있습니다 :
s1 = 'alow'; s1.size #=> 4
s2 = 'álow'; s2.size #=> 5
s1[0,1] #=> "a"
s2[0,1] #=> "\303"
s1[0,1].upcase #=> 'A'
s2[0,1].upcase #=> '\303' !!!
s1[0,1].upcase + s1[1,100] #=> "Alow" OK
s2[0,1].upcase + s2[1,100] #=> "álow" NOT OK
나는 그것을 일반적인 것으로 만들고 싶습니다.
난 그냥 사용하는 클래스 ../active_support/core_ext/string/multibyte.rb에서 볼 수 있듯이 레일 문자열이 멀티 바이트에 캐스트 할 수있는 것을 발견
[편집] : 아직도
s2.mb_chars[0,1].upcase.to_s #=> "Á"
, @nsdk 접근법은 사용하기가 더 쉽습니다.)
mb_chars에 대한 정보는 솔루션입니다. 또한 비 Rails 응용 프로그램에서 Active Support 3의 멀티 바이트를 요구할 수 있습니다 (Sinatra 응용 프로그램 및 시스템 스크립트에서 항상 수행합니다). 자신의 질문에 답하고 @ nsdk가 아닌 정답으로 표시해야합니다. – mislav