Actionscript 3 替换AS3中与之对应的重音符号

Actionscript 3 替换AS3中与之对应的重音符号,actionscript-3,diacritics,Actionscript 3,Diacritics,我将如何继续将ëëëññ(etc)更改为他们的对手?伊琳 我在考虑对é->é;进行正则表达式匹配;以及替换&和急性/严重;使用空字符串,但我似乎找不到将重音编码到非数字实体的AS3函数(ê;等等)。我已经尝试过使用关联数组,a la entities[“À”]=“a”;,但是AS3似乎不喜欢unicode键 如有任何建议,将不胜感激 谢谢 这被称为“unicode分解”,因此您可能需要在谷歌上搜索它。但是,如果您正在处理的语言不是您自己的语言,请不要这样做 我知道,对于不懂其

我将如何继续将ëëëññ(etc)更改为他们的对手?伊琳

我在考虑对é->é;进行正则表达式匹配;以及替换&和急性/严重;使用空字符串,但我似乎找不到将重音编码到非数字实体的AS3函数(ê;等等)。我已经尝试过使用关联数组,a la entities[“À”]=“a”;,但是AS3似乎不喜欢unicode键

如有任何建议,将不胜感激

谢谢

这被称为“unicode分解”,因此您可能需要在谷歌上搜索它。但是,如果您正在处理的语言不是您自己的语言,请不要这样做

我知道,对于不懂其他语言的以英语为母语的人来说,这个想法似乎是合理的,但对于那些字符是字母的人来说,它的意义就像对一个以英语为母语的人来说,用“VV”替换“W”,“用“cl”替换“d”,用“O”替换“Q”一样

附:既然你问:

您可以循环遍历字符串do
charCodeAt()
,并对整数执行关联数组。但我还是不推荐

“Doña”表示“lady”,但“dona”表示“甜甜圈”。“De”表示“from”,而“dé”表示“give”。等等等等


它们不仅仅是带有恼人的飞点的普通字母,它们实际上与“E”和“F”或“p”和“R”一样清晰。

修复了德语中的这个问题,因为你用“Ae”表示“Ä”,用“Oe”表示“Ö”等

/**
*用于unicode分解的辅助数组
*/
变量模式:数组=新数组();
模式推送(新RegExp(“Š”,“g”));
pattern.push(新的RegExp(“[ŒÖ]”,“g”);
模式推送(新RegExp(“Ž”、“g”);
模式推送(新RegExp(“š”、“g”);
push(newregexp(“[œö]”,“g”);
模式推送(新RegExp(“ž”,“g”);
模式推送(newregexp(“[ÀÁÃ]”,“g”);
模式推送(newregexp(“[ÆÄ]”,“g”);
推送模式(新RegExp(“ch”,“g”));
模式推送(新RegExp(“[ÈÊË]”,“g”);
模式推送(新的RegExp(“[ÌÍÍÏ]”,“g”);
模式推送(新RegExp(“Д、“g”);
模式推送(新RegExp(“ñ”、“g”);
模式推送(新的RegExp(“[ÒÓÕØ],“g”);
模式推送(新RegExp(“Ü”、“g”);
模式推送(newregexp(“[217ÚÛ]”,“g”);
pattern.push(新的RegExp(“[ŸÝ]”,“g”);
模式推送(新RegExp(“Þ”、“g”);
模式推送(新RegExp(“ß”、“g”);
push(新的RegExp(“[áá–å]”,“g”);
pattern.push(新的RegExp(“[æä]”,“g”);
模式推送(新RegExp(“ç”,“g”));
push(newregexp(“[èèë]”,“g”);
pattern.push(新的RegExp(“[ìíîï]”,“g”);
模式推送(新RegExp(“ð”、“g”);
模式推送(新RegExp(“ñ”,“g”));
pattern.push(新RegExp(“[òóõø]”,“g”);
模式推送(新RegExp(“u”,“g”));
push(新的RegExp(“[ùúú]”,“g”);
pattern.push(新的RegExp(“[ýÿ]”,“g”);
模式推送(新RegExp(“þ”、“g”);
变量patternReplace:数组=[
“S”,
“Oe”,
“Z”,
“s”,
“oe”,
“z”,
“A”,
“Ae”,
“C”,
“E”,
“我”,
“D”,
“N”,
“O”,
“Ue”,
“U”,
“Y”,
“Th”,
“党卫军”,
“a”,
“ae”,
“c”,
“e”,
“我”,
“d”,
“n”,
“o”,
“ue”,
“u”,
“y”,
“th”];
/**
*返回给定重音文本的Unicode分解。
*@param值原始字符串
*@返回不带重音的字符串
*/     
私有静态函数decomposeUnicode(str:String):String
{
for(变量i:int=0;i
私有变量sdiakA:Array;
私有变量bdiakA:数组;
私有函数initReplaceAcritic(){
var sdiak=“ääďěĺňŕťťťťťťťťťťťťťťťťťťťťťťťťťťť35;
var bdiak=“aacdeeillnoorstuuuuuyrzaacdeeillnoorstuuuyrz”;
sdiakA=新数组();
bdiakA=新数组();

对于(var i=0;i谢谢您的回复

我来自阿根廷,我们说西班牙语,就像马库斯克说的,去掉口音可以改变一个单词的整个意思。但我也想说,在某些情况下,去掉口音是更好的选择

我正在为一个搜索功能编写一个脚本,你可以通过它的名字找到人们。数据来自一个登记表,人们可以用自己喜欢的方式写名字,例如:Lopez/Lópes,Matias/Matías,等等

因此,对于AS3,“Lopez”和“López”是两个不同的词,我希望当用户搜索“Lopez”时,它们都出现在搜索结果中


这样,我的解决方案是删除所有口音,并在搜索框的文本字段中使用掩码以避免使用口音。我认为这是最好的解决方案,任何人都有更好的主意吗?谢谢!

我希望这对任何人都有用:

此类从包含拉丁-1补遗、拉丁扩展-A和拉丁扩展-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));
来源:

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补编

À

拉丁扩展-A

18月5日日日日日日日日日日日方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方在3 3 3月3日日日日日日日日日日日方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方ůů
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));
    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;
    }