2012-01-03 76 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