【发布时间】:2016-12-13 13:31:52
【问题描述】:
我正在尝试为我们的游戏编写对话系统,但遇到了一个非常简单但令人讨厌的问题。我将文本行从 .txt 文件拆分为字符串数组。字符串本身可以完美运行,但比较它们并不能正常工作。
下面的代码是我目前正在做的简化版。它显示了我用来剪切字符串的语法以及我如何比较它们。就是对文本进行拆分,回车获取下一个文本,遇到特定文本(本例为“-”)自动运行一段代码。
所以问题是,Split 函数是向字符串添加了一些东西还是必须以不同的方式进行比较?
private string[] _textLines;
private TextAsset _textFile;
private int _currentLine;
private void PrepareText()
{
_textFile = _textLoader.GetTextAsset();
_textLines = (_textFile.text.Split('\n'));
private void update() {
if (Input.GetButtonDown("Continue"))
_currentLine += 1;
if (_textLines[_currentLine].Equals("-"))
DisableTextBox();
}
当我记录指定数组槽的内容时,它只给了我应该的“-”,但代码仍然认为它不相等。
我用于此测试的 .txt 文件如下所示。我只想在遇到第 4 行时运行代码。
This is the first line
second line
third line, break coming
-
More dialog here
-
【问题讨论】:
-
您确定没有任何不可见的字符,例如剩余的
\r?存储在数组中的字符串的长度是多少?您可以通过使用 StringReader 或 StreamReader 和 ReadLine 来避免这种情况 -
文件可能被
\r\n组合分割。然后你会得到像-\r这样的行,当然,它不等于-。 BTW:我宁愿推荐使用函数File.ReadAllLines(见msdn.microsoft.com/cs-cz/library/…) -
“代码不认为它是平等的” - 你还没有证明(或证明)这一点。你能把问题缩小到一个简单的example 我们可以试试吗?可能
DisableTextBox()有问题? -
尝试将其转换为 ASCII,看看它是否给你 45(- 符号) Encoding.ASCII.GetBytes(value);
-
用
Environment.NewLine代替\n