0

我有一个字符串数组:

private var phrase:Array = ["You will be given a series of questions like this:\n2 + 2 =\n(click or press ENTER to continue)","You can use the Keyboard or Mouse\nto deliver the answer\n\"ENTER\" locks it in.\n(click or press ENTER to continue)","\nClick Here\n to start."];  

我在脚本后面有一个条件来查看 是否phrase[0]等于instructText.text,所以我在赋值之后直接放了一个“测试”,如下所示:

instructText.text = phrase[0];
if (instructText.text == phrase[0]) {
    trace("phrase zero");
}
else {
    trace("nottttttttt");
}  

//OUTPUT: nottttttttt

我尝试了 和 的各种组合phrase[0] as StringString(phrase[0])但没有任何运气。

我错过了什么?

4

1 回答 1

0

事实证明,该类的text属性将“换行”字符( 10 10 =A 16ASCII 代码)转换为“回车”字符(13 10 =D 16的 ASCII 代码)。TextField"\n"

因此,您需要进行 LF 到 CR 的转换(或反之亦然),以对存储在属性中的内容与数组元素中的内容进行同质比较:

function replaceLFwithCR(s:String):String {
    return s.replace(/\n/g, String.fromCharCode(13));
}
if (instructText.text == replaceCRwithLF(phrase[0])) {
    trace("They are equal :)");
}
else {
    trace("They are NOT equal :(");
}
// Output: They are equal :)


PS要获取字符的代码,您可以利用类的charCodeAt()方法String

trace("\n".charCodeAt(0)); // 10
于 2016-09-18T13:06:08.810 回答