This is a follow on from my last question.
我想要比较的字符串如下:
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 \ 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
我猜这意味着我错误地计算了我需要在子字符串中重复计算的字符数量。
我的问题是:
有没有更好的方法可以将我的存储值与真正长字符串的特定部分进行比较,或者我在代码中做了一些愚蠢的事情,这会产生错误?
这是一个Unity项目,我正在构建到iPad上,并利用了一些我无法在Mac上复制的功能。
答案 0 :(得分:0)
在您的代码中我发现您正在调用Substring()方法,但没有将其结果保存/保存到某个变量中。
message.Substring(message.Length-77, message.Length);
as string是一个不可变的,无法修改。 因此,当您调用Substring()方法时,它会剪切所需的文本并返回,您必须将其保存在某个变量上才能继续进行。 如下:
替换你的函数AppendString(),如下所示:
private void AppendString(string message)
{
message= message.Substring(message.Length-77, message.Length);
outputContent.text += "\n" + message;
}