我是一个很长的字符串数组,我想将它传递给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
。
为什么?我也试图在循环中每次初始化字符串变量,所以它从零开始但没有增益。
答案 0 :(得分:9)
Substring's second parameter is the length you want,而不是止损指数。
public string Substring(
int startIndex,
int length
)
因此,您需要做的就是更改代码以获得起始索引和长度(phase
)
fileInString.Substring(cStart, phase)
答案 1 :(得分:7)
以下是有关如何使用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;
}
答案 2 :(得分:2)
尝试更改
fileInStringTemp = fileInString.Substring(cStart, cEnd);
到
fileInStringTemp = fileInString.Substring(cStart, cPhase);
答案 3 :(得分:0)
Substring具有参数(startIndex, count)
,因此您不允许增加结束。更好地更改为Substring(cStart, phase)
答案 4 :(得分:0)
SubString()方法的第二个参数是要返回的子字符串的长度。 (你应该能够总是使用250并且只是继续改变你的起点 - 第一个参数 - 直到你完成。)