سؤال

كيف يمكنني الذهاب حول تغيير éëíïññ (إلخ) إلى نظرائهم؟ أي EEIINN.

كنت أفكر في القيام مطابقة Regex ضد é -> É واستبدال كل من & الحاد / القبر؛ مع سلاسل فارغة، ولكن لا يمكنني العثور على وظيفة AS3 التي ترميز اللجهات إلى كياناتها غير العددي (وكأنها مثل). لقد حاولت بالفعل استخدام مجموعة أساسية، وهي كيانات LA ["à"] = "A"؛، ولكن AS3 يبدو أنه يكره مفاتيح Unicode.

فإن أي اقتراحات موضع تقدير كبير.

شكرا!

هل كانت مفيدة؟

المحلول

وهذا ما يسمى "تحلل Unicode"، لذلك قد ترغب في جوجل لذلك. ومع ذلك، إذا كنت تتعامل مع لغات أخرى غيرك، فلا تفعل ذلك.

أعلم أن الفكرة تبدو معقولة للمتحدثين باللغة الإنجليزية الأصلية الذين لا يعرفون لغات أخرى، ولكن للناس الذين هؤلاء الأحرف رسائل يجعل من المعنى أنها تحل محل استبدال "W" مع "VV"، "D" مع "CL" و "Q "مع" o، "من شأنه أن يتحدث الإنجليزية.

ملاحظة: منذ أن طلبت:

يمكنك حلقة من خلال السلسلة التي تفعل charCodeAt() والقيام صفيف البريدية الخاصة بك على الأعداد الصحيحة. لكن ما زلت لا أوصي به.

"دولا" تعني "سيدة" ولكن "دونا" تعني "دونات". "DE" تعني "من" و "Dé" تعني "إعطاء". وهلم جرا وهكذا دواليك.

إنهم ليسوا مجرد رسائل طبيعية مع flyspecks مزعج، فهي في الواقع متميزة مثل "E" و "F" أو "P" و "r".

نصائح أخرى

شكرا لك على الرد.

أنا من الأرجنتين، ونحن نتكلما الإسبانية، ومثل Markusq، وقال إن إزالة لهجة يمكن أن يغير المعنى بأكمله للكلمة. ولكن أود أيضا أن أقول إن هناك بعض السيناريوهات حيث إزالة اللجهات أفضل.

أنا أكتب برنامج نصي لوظيفة بحث، حيث يمكنك العثور على أشخاص باسمه. تأتي البيانات من نموذج التسجيل حيث يكتب الناس أنه أسماء الطريقة التي يعجبهم بها، أي: Lopez / Lópes، Matias / Matías، إلخ.

لذلك بالنسبة ل AS3 "Lopez" و "López" هي كلمات مميزة وأرغب في الحصول عليها في نتائج البحث عندما يبحث المستخدم عن "Lopez".

بهذه الطريقة، الحل الخاص بي هو إزالة جميع لهجات، واستخدام قناع في Text الموجود في مربع البحث لتجنب استخدام لهجات. أعتقد أن أفضل حل، أي شخص لديه فكرة أفضل؟ شكرا!

تم إصلاح هذا بالنسبة للألمانية، كما يمكنك استخدام "AE" ل "Ä"، "OE" ل "Ö"، إلخ.

    /**
     * Helper arrays for unicode decomposition
     */
     var pattern:Array = new Array();
        pattern.push(new RegExp("Š", "g") );
        pattern.push( new RegExp("[΅]", "g"));
        pattern.push( new RegExp("Ž", "g"));
        pattern.push( new RegExp("š", "g"));
        pattern.push(new RegExp("[Ϛ]", "g"));
        pattern.push( new RegExp("ž", "g"));
        pattern.push(new RegExp("[ÀÁÂÃÅ]","g"));
        pattern.push( new RegExp("[ÆÄ]","g"));
        pattern.push( new RegExp("Ç","g"));
        pattern.push( new RegExp("[ÈÉÊË]","g"));
        pattern.push(new RegExp("[ÌÍÎÏ]", "g"));
        pattern.push( new RegExp("Ð", "g"));
        pattern.push( new RegExp("Ñ","g"));
        pattern.push( new RegExp("[ÒÓÔÕØ]", "g"));
        pattern.push( new RegExp("Ü","g"));
        pattern.push( new RegExp("[ÙÚÛ]","g"));
        pattern.push( new RegExp("[ŸÝ]", "g"));
        pattern.push( new RegExp("Þ", "g"));
        pattern.push( new RegExp("ß", "g"));
        pattern.push( new RegExp("[àáâãå]","g"));       
        pattern.push( new RegExp("[æä]","g"));
        pattern.push( new RegExp("ç","g"));
        pattern.push( new RegExp("[èéêë]","g"));
        pattern.push( new RegExp("[ìíîï]","g"));
        pattern.push( new RegExp("ð", "g"));
        pattern.push( new RegExp("ñ","g"));
        pattern.push( new RegExp("[òóôõø]", "g"));
        pattern.push( new RegExp("ü","g"));
        pattern.push( new RegExp("[ùúû]","g"));
        pattern.push( new RegExp("[ýÿ]","g"));
        pattern.push( new RegExp("þ", "g"));

         var patternReplace:Array = [
            "S",
            "Oe",
            "Z",
            "s",
            "oe",
            "z",
            "A",
            "Ae",
            "C",
            "E",
            "I",
            "D",
            "N",
            "O",
            "Ue",
            "U",
            "Y",
            "Th",
            "ss",
            "a",
            "ae",
            "c",
            "e",
            "i",
            "d",
            "n",
            "o",
            "ue",
            "u",
            "y",
            "th"];

    /**
     * Returns the Unicode decomposition of a given run of accented text. 
     * @param value The original string
     * @return The string without accents
     */     
    private static function decomposeUnicode(str:String):String
    {
        for (var i:int = 0; i < pattern.length; i++)
        {
            str = str.replace(pattern[i], patternReplace[i]);
        }
        return str;
    }
    private var sdiakA:Array;
    private var bdiakA:Array;
    private function initReplaceDiacritic(){
        var sdiak = "áäčďéěíĺľňóôöŕšťúůüýřžÁÄČĎÉĚÍĹĽŇÓÔÖŔŠŤÚŮÜÝŘŽ";
        var bdiak = "aacdeeillnooorstuuuyrzAACDEEILLNOOORSTUUUYRZ";
        sdiakA = new Array();
        bdiakA = new Array();

        for (var i=0;i<sdiak.length;i++)
            sdiakA.push(new RegExp(sdiak.charAt(i), "g"))
        for (i=0;i<sdiak.length;i++)
            bdiakA.push(bdiak.charAt(i))
    }
    private function replaceDiacritic(string:String){               
        for (var i:int = 0; i < sdiakA.length; i++)
            string = string.replace(sdiakA[i], bdiakA[i]);
        return (string)
    }
initReplaceDiacritic();
var str = replaceDiacritic("šžřáíéééíčšřčš");

آمل أن يكون هذا مفيدا لأي شخص:https://github.com/infralabs/diacriticsremove.

يزيل هذا الفصل الدروع من السلاسل التي تحتوي على مكملات Latin-1، Latin Extended-A و Latin Extended-B خاص.

الاستعمال:

var specialCharacters:String = "";
specialCharacters+="Latin-1 Supplement\n";
specialCharacters+="ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\n";
specialCharacters+="Latin Extended-A\n";
specialCharacters+="ĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇňʼnŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžſ\n";
specialCharacters+="Latin Extended-B\n";
specialCharacters+="ƒǺǻǼǽǾǿ\n";
specialCharacters+="Latin Extended Additional\n";
specialCharacters+="ẀẁẂẃẄẅỲỳ\n";

trace(new DiacriticsRemove().Parse(specialCharacters));

مصدر:

الملحق اللاتيني 1

ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ

اللاتينية الممتدة

ĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇňʼnŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžſ

Latin Extended-B

ƒǺǻǼǽǾǿ

اللاتينية ممتدة إضافية

ẀẁẂẃẄẅỲỳ

نتيجة:

الملحق اللاتيني 1

AAAAAAECEEEIIIIDNOOOO × OUUUUYTHSSAAAAAAEIEIEIIIIDNOOOO÷ ÷ Ouuuythy

اللاتينية الممتدة

AaAaAaCcCcCcCcDdDdEeEeEeEeEeGgGgGgGgHhHhIiIiIiIiIiIJijJjKkĸLlLlLlLlLlNnNnNnnNnOoOoOoOEoeRrRrRrSsSsSsSsTtTtTtUuUuUuUuUuUuWwYyYZzZzZzs

Latin Extended-B

Faaeaeoo.

اللاتينية ممتدة إضافية

wwwwwwyyy

بديل آخر:

    public static function noAccent(source:String):String
    {
        source = source.replace(/[àáâãäå]/g, "a");
        source = source.replace(/[ÀÁÂÃÄÅ]/g, "A");
        source = source.replace(/[èéêë]/g, "e");
        source = source.replace(/[ËÉÊÈ]/g, "E");
        source = source.replace(/[ìíîï]/g, "i");
        source = source.replace(/[ÌÍÎÏ]/g, "I");
        source = source.replace(/[ðòóôõöø]/g, "o");
        source = source.replace(/[ÐÒÓÔÕÖØ]/g, "O");
        source = source.replace(/[ùúûü]/g, "u");
        source = source.replace(/[ÙÚÛÜ]/g, "U");
        source = source.replace(/[ýýÿ]/g, "y");
        source = source.replace(/[ÝÝŸ]/g, "Y");
        source = source.replace(/[ç]/g, "c");
        source = source.replace(/[Ç]/g, "C");
        source = source.replace(/[ñ]/g, "n");
        source = source.replace(/[Ñ]/g, "N");
        source = source.replace(/[š]/g, "s");
        source = source.replace(/[Š]/g, "S");
        source = source.replace(/[ž]/g, "z");
        source = source.replace(/[Ž]/g, "Z");
        source = source.replace(/[æ]/g, "ae");
        source = source.replace(/[Æ]/g, "AE");
        source = source.replace(/[œ]/g, "oe");
        source = source.replace(/[Œ]/g, "OE");
        return source;
    }

مصدر: http://blog.geturl.net/post20/2010/01/31/ Budapas3 --Supprimer-Tous-les-Accents-D-une-Chaine-De-Caract٪C3٪A8RE.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top