2013-12-11 34 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; 
}