2013-12-11 36 views
0

我长的字符串数组抽取子,我想将它传递给在一次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

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

回答

9

Substring's second parameter is the length you want,而不是停止指数。

public string Substring(
    int startIndex, 
    int length 
) 

因此,所有你需要做的是改变你的代码有开始索引和长度(phase

fileInString.Substring(cStart, phase) 
2

尝试改变

fileInStringTemp = fileInString.Substring(cStart, cEnd); 

fileInStringTemp = fileInString.Substring(cStart, cPhase); 
0

子串有参数(startIndex, count),这样你就不会大声增加结尾。更好地更改为Substring(cStart, phase)

0

SubString()方法的第二个参数是要返回的子字符串的长度。 (你应该能够一直使用250,只是不停变动的起点 - 第一PARAM - 直到你做。)

7

下面是有关如何使用子串工作MSDN链接:

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

根据MSDN,子字符串方法中的第一个参数是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; 
}