【问题标题】:Unable to extract a substring from a string无法从字符串中提取子字符串
【发布时间】:2013-12-11 20:00:49
【问题描述】:

我是长字符串数组,我想将它传递给 250 字符块中的另一个函数,我已经编写了以下代码:

var cStart = 0;
var phase = 250;
var cEnd = cStart + phase;
var count = 0;

while (count < 10000)
{
    string fileInStringTemp = "";
    fileInStringTemp = fileInString.Substring(cStart, cEnd);
    var lngth = fileInStringTemp.Length;

    //Do Some Work

    cStart += phase;
    cEnd += phase;
    count++;
}

在循环的第一次迭代中,lngth 的值是 250,这很好,在下一次迭代中,我也希望它为 250,因为我正在从 250-500 个字符中提取子字符串,但令人震惊的是该值在第二次迭代中,lngth 的变量得到 500

这是为什么呢?我也试图在循环中每次初始化字符串变量,所以它从零开始但没有增益。

【问题讨论】:

    标签: c# .net substring


    【解决方案1】:

    Substring's second parameter is the length you want,不是停止索引。

    public string Substring(
        int startIndex,
        int length
    )
    

    所以,您需要做的就是更改您的代码,使其具有起始索引和长度 (phase)

    fileInString.Substring(cStart, phase)
    

    【讨论】:

      【解决方案2】:

      这是关于如何使用 Substring 的 MSDN 链接:

      https://msdn.microsoft.com/en-us/library/aka44szs(v=vs.110).aspx

      根据MSDN,Substring方法的第一个参数是StartIndex,定义为从零开始的子字符串起始字符位置,第二个参数用于定义子字符串的长度,定义为子字符串中的字符数

      所以你应该试试这个:

      var cStart = 0;
      var phase = 250;
      var count = 0;
      
      while (count < 10000)
      {
          string fileInStringTemp = "";
          fileInStringTemp = fileInString.Substring(cStart, phase);
          var lngth = fileInStringTemp.Length;
      
          //Do Some Work
          count++;
          cStart = phase * count + 1;
      }
      

      【讨论】:

        【解决方案3】:

        尝试改变

        fileInStringTemp = fileInString.Substring(cStart, cEnd);
        

        fileInStringTemp = fileInString.Substring(cStart, cPhase);
        

        【讨论】:

          【解决方案4】:

          SubString() 方法的第二个参数是要返回的子字符串的长度。 (您应该能够始终使用 250 并不断移动您的起点 - 第一个参数 - 直到完成。)

          【讨论】:

            【解决方案5】:

            子字符串有参数 (startIndex, count) 所以你不能大声递增 end。最好改成Substring(cStart, phase)

            【讨论】:

              猜你喜欢
              • 2011-07-21
              • 1970-01-01
              • 2018-09-29
              • 2021-12-23
              • 1970-01-01
              • 1970-01-01
              • 2012-02-28
              • 2011-11-17
              相关资源
              最近更新 更多