Pascal substr等价物

Mic*_*čný 11 pascal substring substr

我正在寻找一个Pascal等价物(例如)php的substr函数,它的工作原理如下:

$new_string = substr('abcdef', 1, 3);  // returns 'bcd'
Run Code Online (Sandbox Code Playgroud)

我已经找到了它,但我总是花费太长时间才这样做,所以我发布了像我这样的其他人的答案,以便能够轻松找到它.

Mic*_*čný 16

您可以使用功能副本.语法如下:

copy(string, start, length);
Run Code Online (Sandbox Code Playgroud)

Pascal中的字符串似乎从1开始索引,因此以下内容:

s1 := 'abcdef';
s2 := copy(s1, 2, 3);
Run Code Online (Sandbox Code Playgroud)

将导致s2 =='bcd'.

希望这有助于某人.

  • FYI,Pascal字符串从1开始索引的原因是索引0处的字节包含字符串的长度,即`s1`在索引0处将具有"6",在索引1..6处将具有字符"abcdef".这将Pascal字符串长度的上限设置为255. (2认同)
  • @PaulR:十多年来,现代 Pascal 编译器已经不再使用 `0` 字节长度的存储位置和 255 个字符的限制。(例如,FreePascal 支持长达 2GB 的长字符串。)“第 0”字节内容已被引用计数和其他信息替换,这些信息存储在第一个字节地址的负偏移量处。 (2认同)