这是我试图转换为.net的Delphi代码:
s1 := Copy ( s1 , 1,x - 1) + Copy(s1, x + 1,Length(s1));
我试过了:
s1 = s1.Substring(x - 1, 1) + s1.Substring(s1.Length, x + 1)
但是当索引超出范围时我会得到错误。在Delphi,它工作得很好。
添加了一行进行转换.. s2:= s2 + chr(3);
答案 0 :(得分:7)
你的Substring
参数被颠倒了 - 起始索引首先就像在Delphi中一样。
Delphi字符串索引是从1开始的。 .net字符串索引是从0开始的。你有一个经典的一对一错误。
最后,你不能使用Substring
的长度参数来放松。在Delphi的Copy
中,您可以指定一个任意大的长度值,您将获得所有最右侧的字符。在Substring
中,你不能要求更多的角色。如果你这样做,则抛出ArgumentOutOfRangeException
。
你需要这个:
s1 = s1.Substring(0, x-1) + s1.Substring(x, s1.Length-x)
我假设您已确保x
在0
到s1.Length-1
的范围内。
至于你的其他问题,
s2 := s2 + chr(3);
转换为
s2 = s2 + Chr(3)