【问题标题】:C# Substring on a Windows Mobile Device throwing an 'out of valid range' error with valid rangeWindows Mobile 设备上的 C# 子字符串在有效范围内引发“超出有效范围”错误
【发布时间】:2018-09-10 20:34:18
【问题描述】:

我的代码:

using (StreamReader sr = new StreamReader("Flash Disk/thing.ini"))
            {
                text = sr.ReadToEnd();
                int length = text.Length;  //3722
                int indexStart = text.IndexOf("DeviceName="); //3126
                int indexEnd = text.IndexOf("DeviceID="); //3145
                string deviceName = text.Substring(indexStart, indexEnd);
                Console.WriteLine(name);
            }

它正在爆炸 string deviceName = text.Substring(indexStart, indexEnd);

我收到 ArgumentOutOfRangeException,它告诉我“指定的参数超出了有效值的范围。”没有别的了。

我在这里迷路了。有什么想法吗?

【问题讨论】:

    标签: c# mobile substring


    【解决方案1】:

    在您的问题中,总字符串长度为4752

    int length = text.Length;  //4752
    

    但是Substring第二个参数数字代表你要检索的字符数。

    在您的代码中,以indexStart(4176) 开头并检索将超过字符串长度的indexEnd(4195)

    我认为你需要在第二个参数上使用indexEnd - indexStart

    int indexStart = text.IndexOf("DeviceName="); //4176
    int indexEnd = text.IndexOf("DeviceID="); //4195
    string deviceName = text.Substring(indexStart, indexEnd - indexStart);
    

    【讨论】:

      猜你喜欢
      • 2012-06-23
      • 2012-03-18
      • 2016-05-18
      • 1970-01-01
      • 2021-07-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多