AS3“高级”字符串操作

时间:2015-07-12 13:44:47

标签: string actionscript-3 air

我正在制作一本航空词典而且我有一个(另一个)问题。主应用程序已经准备就绪并且可以正常工作,但是当我测试它时,我注意到它可能会更好。一点背景:我正在翻译的语言(古埃及语言)不使用标点符号,因此可以使用短语。再加上字形系统的复杂性(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)。我不知道该怎么做就是将这两者混合在一起制作合法的短语:

enter image description here

如果只有三个字形,我可能找到一种方法,但用户最多可以输入60个字形。

0 个答案:

没有答案