2012-01-03 54 views
2

這是Delphi代碼,我想轉換到.NET:轉換德爾福System.Copy到.NET

s1 := Copy (s1 , 1,x - 1) + Copy(s1, x + 1,Length(s1)); 

我想:

s1 = s1.Substring(x - 1, 1) + s1.Substring(s1.Length, x + 1) 

,但我得到錯誤的,當指數超出範圍。在德爾福它工作正常。

增加了一條線來轉換.. s2:= s2 + chr(3);

回答

7

你的參數到Substring是相反的 - 開始索引就像Delphi中一樣。

德爾福字符串索引是基於1的。 .net字符串索引是基於0的。你有經典的錯誤。

最後,對於Substring,你不能玩那麼寬鬆的長度參數。在Delphi的Copy中,你可以指定一個任意大的長度值,你將得到所有最右邊的字符。在Substring你不能要求更多的字符。如果你這麼做,那麼拋出ArgumentOutOfRangeException

你需要這樣的:

s1 = s1.Substring(0, x-1) + s1.Substring(x, s1.Length-x) 

我假設你已經確保了x範圍爲0s1.Length-1


至於你的其他問題,

s2 := s2 + chr(3); 

轉化爲

s2 = s2 + Chr(3) 
+0

OK,但我的解釋上面的決心並沒有這一切還是你仍然有問題? – 2012-01-04 21:19:39

+0

我仍然有一個問題,而不是我在問題中描述的問題。我會爲此提出一個新問題 – Ezi 2012-01-04 21:24:43