我的游戏必须使用文本文件以特定顺序为其提供指令,因此文件中充满了符号。在我的脚本中,我导入带有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语句不再起作用。完全没有每行都是默认值,并且不会与案例匹配。我的日志声明确认:
在第+行上退出
在行上退出-
在行上淡出/等
那些符号与要检查的案例完全匹配,但是如果没有这些空行,案例将无法正常工作。我该如何解决?
@ ctwheels是正确的。因为我的正则表达式不正确,所以拆分混乱了。这完全有效:
string[] lines = Regex.Split(patt.text, "\r\n ?|\n");