我正在制作一本航空词典而且我有一个(另一个)问题。主应用程序已经准备就绪并且可以正常工作,但是当我测试它时,我注意到它可能会更好。一点背景:我正在翻译的语言(古埃及语言)不使用标点符号,因此可以使用短语。再加上字形系统的复杂性(6000+字形)。 知道我的应用程序是这样的:
用户选择组成他/ r字的字形。
app将这些字形转换为字母数字值(A1 - D36 - X1A等)。
代码将代码(例如:A5AD36)与xml值列表进行比较。
如果找到该单词(A5AD36 = Bast的priestess),则用户获得翻译。如果不是,则他/她获得对应于两个字形的所有可能的单词(A5A和D36)。
如果用户知道字符串是单词,没问题。但如果他/她输入几个单词,他/她将有比预期更多的选择(例如:查询= A1A5AD36获得A1 - A5A - D36 - A5AD36)。 我想做的是:
query = A1A5AD36 //要翻译的单词/短语;
varArray = [A1,A5A,D36] //包含字形值的变量。
来自xml的相应可能单词:A1,A5A,D36,A5AD36。
可能的短语:A1 A5A D36 / A1 A5AD36 / A1A5A D36 / A1A5AD36。
只有合法字词的可能短语:A1 A5A D36 / A1 A5AD36。
我不是很清楚,但对于简单的事情,我想得到所有可能包含合法词语的短语,并过滤掉其他词语。 (英语示例:TOBREAKFAST。合法=快速突破/早餐。非法=快速突破。
我设法得到了所有可能的话,但其余的都没有。现在,当我运行我的应用程序时,我有一个包含A1 - A5A - D36 - A5AD36的数组。但我坚持前进。
有没有人有想法?谢谢:)
function fnSearch(e: Event): void {
var val: int = sp.length; //sp is an array filled with variables containing the code for each used glyph.
for (var i: int = 0; i < val; i++) { //repeat for every glyph use.
var X: String = ""; //variable created to compare with xml dictionary
for (var i2: int = 0; i2 < val; i2++) { // if it's the first time, use the first glyph-code, else the one after last used.
if (X == "") {
X = sp[i];
} else {
X = X + sp[i2 + i];
}
xmlresult = myXML.mot.cd; //xmlresult = alphanumerical codes corresponding to words from XMLList already imported
trad = myXML.mot.td; //same with traductions.
for (var i3: int = 0; i3 < xmlresult.length(); i3++) { //check if element X is in dictionary
var codeElement: XML = xmlresult[i3]; //variable to compare with X
var tradElement: XML = trad[i3]; //variable corresponding to codeElement
if (X == codeElement.toString()) { //if codeElement[i3] is legal, add it to array of legal words.
checkArray.push(codeElement); //checkArray is an array filled with legal words.
}
}
}
}
var iT2: int = 500 //iT2 set to unreachable value for next lines.
for (var iT: int = 0; iT < checkArray.length; iT++) { //check if the word searched by user is in the results.
if (checkArray[iT] == query) {
iT2 = iT
}
}
if (iT2 != 500) { //if complete query is found, put it on top of the array so it appears on top of the results.
var oldFirst: String = checkArray[0];
checkArray[0] = checkArray[iT2];
checkArray[iT2] = oldFirst;
}
results.visible = true; //make result list visible
loadingResults.visible = false; //loading screen
fnPossibleResults(null); //update result list.
}
我最终得到一个包含字形码(sp)的变量数组,另一个包含所有可能的合法字词(checkArray)。我不知道该怎么做就是将这两者混合在一起制作合法的短语:
如果只有三个字形,我可能找到一种方法,但用户最多可以输入60个字形。