0

这是我上一个问题的后续。

我试图比较的字符串如下:

Discovered Peripherial: <CBPeripheral: 0x39b8b50 identifier = DEEE65FB-FF1F-A6A9-4C3C-5784F41B0D39, Name = "rawr", state = connecting>

我要做的是检查我存储在程序中的标识符号。为此,我做了以下工作:

private void AppendString(string message) 
{
    message.Substring(message.Length-77, message.Length);
    outputContent.text += "\n" + message;
}

\n 在那里,因为我正在阅读 6 个不同的设备,它们都生成上述行。所以我需要一些东西让它更容易阅读。

然后在我的更新功能中,我正在检查它们是否类似:

if(String.Equals(myValues["UUID"], outputContent.text, StringComparison.OrdinalIgnoreCase))
{
    Instantiate(model1, new Vector3(-2.5f, 3.0f,0), Quaternion.identity);
}

但是,当我在 iPad 上运行它时,xCode 会生成以下消息:

ArgumentOutOfRangeException: startIndex + length > this.length
Parameter name: length

我猜这意味着我算错了我需要从子字符串中倒数的字符数量。

我的问题是这样的:

有没有更好的方法可以将我的存储值与一个非常长的字符串的特定部分的存储值进行比较,或者我是否在我的代码中做了一些愚蠢的事情来产生那个错误?

这是我在 iPad 上构建的 Unity 项目,它使用了一些我无法在 Mac 上复制的功能。

4

1 回答 1

0

在您的代码中,我观察到您正在调用 Substring() 方法,但没有将其结果获取/保存到某个变量中。

message.Substring(message.Length-77, message.Length);

因为字符串是不可变的,不能修改。因此,当您调用 Substring() 方法时,它会剪切所需的文本并返回,您必须将其保存在某个变量中才能继续进行。如下:

替换您的函数 AppendString() 如下:

private void AppendString(string message) 
{
   message= message.Substring(message.Length-77, message.Length);
    outputContent.text += "\n" + message;
}
于 2013-11-01T17:26:46.853 回答