通过数组的switch语句中的错误

问题描述 投票:0回答:1

我的游戏必须使用文本文件以特定顺序为其提供指令,因此文件中充满了符号。在我的脚本中,我导入带有Resources.Load的TextAsset,并使用以下命令通过换行符将该对象拆分为一个数组:

string[] lines = Regex.Split(theTextObject.text, "\n|\r|\n\r");

然后,我通过此switch-case语句运行这些行(带有for循环:

switch(lines[i])
{
    case "-":
        //Code
        break;
    case "+":
        //Code
        break;
    case "/":
        //Code
        break;
    case "!":
        //Code
        break;
    default:
        Debug.Log("Fell out at line " + lines[i]);
}

技术上有效,但是Regex语句实际上并未正确将其分开。在每行之间,它将一个完全空白的字符串添加到数组,使其一部分看起来像:

{"+", "", "-", "", "/", "", "!", ""}

代替

{"+", "-", "/", "!"}

因此,我通过将Regex.Split运算符更改为“ \ n”,使其看起来像这样来解决该问题:

string[] lines = Regex.Split(theTextObject.text, "\n");

这使它看起来正确,每一行正确地分隔到数组中,并且没有空字符串。问题是,switch-case语句不再起作用。完全没有每行都是默认值,并且不会与案例匹配。我的日志声明确认:

在第+行上退出

在行上退出-

在行上淡出/等

那些符号与要检查的案例完全匹配,但是如果没有这些空行,案例将无法正常工作。我该如何解决?

arrays regex unity3d switch-statement
1个回答
0
投票

@ ctwheels是正确的。因为我的正则表达式不正确,所以拆分混乱了。这完全有效:

string[] lines = Regex.Split(patt.text, "\r\n ?|\n");
© www.soinside.com 2019 - 2024. All rights reserved.