比较从.txt文件拆分的字符串不能正常工作Unity C#

时间:2016-12-13 13:31:53

标签: c# string unity5

我正在尝试为我们的游戏编写一个对话系统,我遇到了一个非常简单但烦人的问题。我正在将.txt文件中的文本行拆分为字符串数组。字符串本身工作得很好,但比较它们并不像通常那样工作。

以下代码简化了我目前正在做的事情。它显示了我用来剪切字符串的语法以及我如何比较它们。是分割文本,按Enter键获取下一个文本,如果遇到某些文本则自动运行一段代码(" - "在这种情况下)。

所以问题是,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
-

2 个答案:

答案 0 :(得分:0)

感谢您的快速提示!与评论中建议的一样,使用以下代码会在字符串中添加一个不可见的字符。

_textFile.text.Split('\n')

而不是像评论中建议的那样学习使用StringReader的新东西(因为我很愚蠢),我通过将string.Equals()的比较更改为string.Contains()来快速解决问题。它完美无缺(除了在我的情况下没有真正做任何事情的隐形角色)

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].Contains("(end)"))                           
        DisableTextBox();
}

对于我的示例.txt文件,必要的更改自然如下:

This is the first line
second line
third line, break coming
(end)
More dialog here
(end)

答案 1 :(得分:0)

我建议你检查一下这个讨论:Split text with '\r\n'

使用'\ n'分割不会“拆分”\ r \ n,因此数组中的所有值都在末尾都有“\ r \ n”。

我在上面提到的帖子中有不同的解决方案。