题
我将如何继续将Éëíïññ(等)更改为同行?即,Eeiinn。
我正在考虑与É->É与É->é进行匹配,并替换又有急性/坟墓;有了空字符串,但我似乎找不到对其非数字实体(等)编码重音的AS3函数。我已经尝试使用一个关联数组,即一个la实体[“à”] =“ a”;,但是AS3似乎不喜欢Unicode键。
任何建议将不胜感激。
谢谢!
解决方案
这称为“ Unicode分解”,因此您可能需要使用Google。但是,如果您要处理以外的语言,请不要这样做。
我知道这个想法对于不了解其他语言的人来说,这一想法似乎是合理的,但是对于那些字符的人来说,这与用“ vv”,“ d”用“ cl”和“ cl”和“ q代替“ w”一样有意义“用“ O”对英语的人会说。
PS既然您问:
您可以循环浏览字符串 charCodeAt()
并在整数上进行关联阵列。但是我仍然不建议这样做。
“Doña”的意思是“女士”,但“ Dona”的意思是“甜甜圈”。 “ de”的意思是“来自”和“dé”的意思是“给”。等等等等。
它们不仅是带有烦人的苍蝇的普通字母,而且实际上与“ E”和“ F”或“ P”和“ R”一样独特。
其他提示
感谢您的答复。
我来自阿根廷,我们会说西班牙语,就像Markusq所说的那样,删除口音可以改变单词的全部含义。但是我还想说,在某些情况下,消除口音更好。
我正在为搜索功能编写脚本,您可以在其中找到人的名字。数据来自注册表,人们以他们喜欢的方式写下名称,即:Lopez/Lópes,Matias/Matías等。
因此,对于AS3“ Lopez”和“López”是不同的单词,当用户搜索“ Lopez”时,我想在搜索结果中将它们都有。
这样,我的解决方案是删除所有重点,并在搜索框的文本字段中使用蒙版来避免使用重点。我认为最好的解决方案,有人有更好的主意吗?谢谢你!
将此用于德语,因为您将“ 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
该课程从包含拉丁-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));
资源:
拉丁-1补充
ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ
拉丁语扩展-A
ĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇňʼnŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžſ
拉丁扩展-b
ƒǺǻǼǽǾǿ
拉丁语扩展了额外
ẀẁẂẃẄẅỲỳ
结果:
拉丁-1补充
AAAAAAAECEEEEIIIIDNOOOOO×OUUUUYTHssaaaaaaaeceeeeiiiidnooooo÷ouuuuythy
拉丁语扩展-A
AaAaAaCcCcCcCcDdDdEeEeEeEeEeGgGgGgGgHhHhIiIiIiIiIiIJijJjKkĸLlLlLlLlLlNnNnNnnNnOoOoOoOEoeRrRrRrSsSsSsSsTtTtTtUuUuUuUuUuUuWwYyYZzZzZzs
拉丁扩展-b
faaaeaeoo
拉丁语扩展了额外
wwwwwwyy
另一个选择:
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;
}