我正在寻找(例如)php 的 substr 函数的 Pascal 等效函数,其工作原理如下:
$new_string = substr('abcdef', 1, 3); // returns 'bcd'
我已经找到了它,但我总是花很长时间才能找到它,所以我将答案发布给像我这样的其他人,以便能够轻松找到它。
您可以使用功能复制。语法如下:
copy(string, start, length);
Pascal 中的字符串似乎是从 1 开始索引的,因此如下:
s1 := 'abcdef';
s2 := copy(s1, 2, 3);
将导致 s2 == 'bcd'.
希望这对某人有帮助。
Freepascal还有复制功能:
T:='1234567';
S:=Copy (T,1,2); { S:='12' }
S:=Copy (T,4,2); { S:='45' }
S:=Copy (T,4,8); { S:='4567' }
我建议您查看Lazarus IDE。
Pascal 没有 PHP 的
substr
函数的 1:1 内置等效函数。
如果
sample
是一个非空字符串,offset
是非负数,并且offset
小于或等于length(sample)
PHP 调用
substr(sample, offset)
相当于
subStr(sample, offset + 1)
请注意,Pascal 中的字符串索引是从 1 开始的,因此从 PHP 翻译时会出现
+1
。
如果
offset
是非负数,offset
小于或等于length(sample)
length
是非负数,并且offset + length
小于或等于 length(sample)
PHP 调用
substr(sample, offset, length)
相当于
subStr(sample, offset + 1, length)
请注意,在这种情况下允许使用空的
sample
字符串。
除非如果
sample
是指定为 bindable
的字符串变量,或者赋予值 ''
(空字符串),或者 length
是非正数subStr
的
三元调用可以替换为
sample[offset + 1 .. offset + length]
受到相同的约束(即索引和所有内容都必须有效)。
对于所有其他情况,您需要定义自己的包装器
function
类似于 user5240584 已经发布的内容。
subStr
函数已在 ISO 标准 10206“扩展 Pascal”中进行标准化。
另一方面,copy
函数是 UCSD Pascal 的非标准化扩展,已被 Borland Pascal(Turbo Pascal、Delphi)、FreePascal 和许多其他 Pascal 方言采用。
function substring(s: string; a, b: integer): string;
var len: integer;
procedure swap(var a, b: integer);
var temp: integer;
begin
temp:= a;
a:= b;
b:= temp;
end;
begin
if (a > b) then
swap(a, b);
len:= length(s);
if ((len = 0) or ((a < 1) and (b < 1)) or
((a > len) and (b > len))) then
begin
substring:= '';
end
else
begin
if (a < 1) then
a:= 1;
if (b > len) then
b:= len;
substring:= copy(s, a, b);
end;
end;