2015-09-17 49 views
2

在for循環時,我不明白以下string.Substring(i,j)String.Substring行爲移動串幀k焦炭地方

具有代碼

String line = "TTACCTTAAC"; 
int k = 3; //this is variable but for simplicity is 3 
String _pattern = ""; 
for (int i = 0; i <= line.Length - k; i++) { 
    _pattern = line.Substring(i, i + k); 
    //do something... 
} 

我期待環路走過去字符串的行爲線(TACCTTAAC(from 0 to 10-3 = 7)像:

TTA 
ACC 
CCT 
CTT 
TTA 
TAA 
AAC 

但是我得到

TTA 
ACCT 
etc... 

我錯過了什麼?

回答

4
Substring

第二個參數是length,不end,所以你只要通過k而不是做你的數學:

String line = "TTACCTTAAC"; 
int k = 3; //this is variable but for simplicity is 3 
String _pattern = ""; 
for (int i = 0; i <= line.Length - k; i++) { 
    _pattern = line.Substring(i, k); 
    //do something... 
} 
+0

(對於OP):還 '長' 將是一個更好的變量吶我比k。 –

+1

有人懷疑,在Java中你可以使用'line.Substring(i,i + k)',那麼你不需要將當前索引和第二個參數求和? – cMinor

+0

對Java一無所知,無法回答。 – MarcinJuraszek

1

子在C#函數作爲string.Substring(INT的startIndex,INT長度)

所以你應該使用

_pattern = line.Substring(i, k);