2017-12-11 8 views
0

나는 나 해당 일반 문자와 유사한 액센트 문자를 변환하고 싶습니다 : "a" 악센트가있는 문자를 타이코트의 일반 라틴 문자로 변환하는 방법은 무엇입니까?

  • é, ê이어야

    • á, àâ이가되어야 e
    • Ç
    • C

    전화 번호를 .replace(...) 개 연결하면 가능하지만 좀 더 우아한 해결책을 찾고 있습니다. 어려움은 어떤 일반 문자가 문자로 확장되었는지를 알아내는 것입니다. áa의 확장자임을 쉽게 알 수 있습니다. 그러나이 단계를 어떻게 자동화합니까?

    이유는 무엇입니까?

    두 응용 프로그램간에 인터페이스가 있습니다. Application One은 상기 액센트를 포함하는 데이터를 제공합니다. 응용 프로그램 2는 [a-zA-Z]과 일치하는 데이터에서만 작동합니다.

  • +0

    아포스트로피가 아니라 액센트입니다. – SLaks

    +0

    관련 : https://stackoverflow.com/questions/286921/efficiently-replace-all-accented-characters-in-a-string – k0pernikus

    +0

    그 목적을위한 라이브러리가있는 것 같습니다. [latinize] (https : // www .npmjs.com/package/latinize) – k0pernikus

    답변

    1

    당신은을 통해 설치 라이브러리 latinize을 사용할 수 있습니다

    npm install @types/latinize 
    

    사용법 :

    var latinize = require('latinize'); 
    latinize('ỆᶍǍᶆṔƚÉ áéíóúýčďěňřšťžů'); // => 'ExAmPlE aeiouycdenrstzu' 
    

    당신이 타이프 라이터를 사용하고 있기 때문에

    npm install latinize 
    

    , 당신은 또한 입력을 얻을 수 있습니다 내부적으로는 라틴 문자 또는 아랍어 숫자가 아닌 각 문자를 대체합니다. 정규 표현식과 콜백 함수.

    function latinize(str) { 
        if (typeof str === 'string') { 
         return str.replace(/[^A-Za-z0-9]/g, function(x) { 
         return latinize.characters[x] || x; 
         }); 
        } else { 
         return str; 
        } 
    } 
    

    그것은 미리 정의 된 character lookup table의 도움을 통해 대상 문자를 찾습니다.


    결국이 솔루션은 검색 및 바꾸기 접근법이기도합니다. 캐릭터의 발견을 자동화하고 싶지만 폰트 시스템은 그런 식으로 작동하지 않는다는 것을 알고 있습니다.

    컴퓨터와 따라서 JavaScript는 문자의 디자인과 의미를 알지 못합니다. 대신 문자는 기호를 식별하는 데 사용하는 임의의 숫자입니다. 그리고 그 시스템은 매우 자의적이며 내부 일관성은별로 없습니다.

    따라서 â은 디자인 상으로는 a과 관련이 있다는 것을 알고 있지만 컴퓨터는 UTF8에 숫자 U+00E2 만 있다는 것을 알고 있습니다. 그래도 U+0061이 되길 원합니다.

    그러나 번호를 아는 것에서 연결이 없습니다. 당신은 기호를 비교해야하고 그것은 거의 가능하지 않습니다. 만약 당신이 매우 유사하게 보이는 상징으로 내려 간다면.Α~ U+0041.

    의미를 계산할 방법이 없습니다. 확장 캐릭터를 라틴어 상대에게 직접 매핑해야합니다 (또는 라이브러리의 도움을 통해).

    +1

    * *는 U + 00C2이며 U + C382는 아닙니다. 그러나 * * * * a *에서 얻는 것은 정규화를 통해 간단합니다. * ff * (U + FB00)에서 * ff * (U + 0066 U + 0066)로가는 것은 좀 더 복잡하며 * A * (U + 0391)에서 * A * (U + 0041) 모양을 기반으로 한 매핑. – Joey

    관련 문제