这是我试图转换为.net的Delphi代码:
s1 := Copy ( s1 , 1,x - 1) + Copy(s1, x + 1,Length(s1));
Run Code Online (Sandbox Code Playgroud)
我试过了:
s1 = s1.Substring(x - 1, 1) + s1.Substring(s1.Length, x + 1)
Run Code Online (Sandbox Code Playgroud)
但是当索引超出范围时我会得到错误.在Delphi中它工作正常.
添加了一行来转换.. s2:= s2 + chr(3);
您的参数Substring被反转 - 起始索引首先与Delphi一样.
Delphi字符串索引是基于1的..net字符串索引是从0开始的.你有一个经典的off-by-one错误.
最后,你不能使用length参数来放松Substring.在Delphi中,Copy您可以指定一个任意大的长度值,您将获得所有最右侧的字符.在Substring你不能要求更多的字符不是有.如果你这样做,那么ArgumentOutOfRangeException就抛出了.
你需要这个:
s1 = s1.Substring(0, x-1) + s1.Substring(x, s1.Length-x)
Run Code Online (Sandbox Code Playgroud)
我假设你已经确保了x在范围0至s1.Length-1.
至于你的其他问题,
s2 := s2 + chr(3);
Run Code Online (Sandbox Code Playgroud)
翻译成
s2 = s2 + Chr(3)
Run Code Online (Sandbox Code Playgroud)