我试图找到解决办法,我怎么可以拆分字符串是这样的:由字符帕斯卡尔 - 拆分字符串数组由每个字符
abkgwvc
到array
?预期的输出是:
array[0] = a
array[3] = g
...
有什么想法吗?
解:
for i := 0 to length(string) do
begin
array[i] = copy(string, i, 1);
end;
我试图找到解决办法,我怎么可以拆分字符串是这样的:由字符帕斯卡尔 - 拆分字符串数组由每个字符
abkgwvc
到array
?预期的输出是:
array[0] = a
array[3] = g
...
有什么想法吗?
for i := 0 to length(string) do
begin
array[i] = copy(string, i, 1);
end;
字符串可以作为直接的字符数组被访问,所以没有必要使用Copy
。下面的示例基于支持动态数组的Delphi/Lazarus版本,但您可以使用旧式固定长度数组(Arr: array[..] of Char
),方法相同;只需删除SetLength
调用并将声明更改为正确的数组类型。
var
Str: string;
Arr: array of Char;
i: Integer;
Len: Integer;
begin
Str := 'abkgwvc';
Len := Length(Str);
SetLength(arr, Len);
// Dynamic arrays are 0-based indexing, while
// strings are 1 based. We need to subtract 1
// from the array index.
for i := 1 to Len do
Arr[i - 1] := Str[i];
end;
(当然,如果你使用动态数组是不,目前还不清楚为什么你需要摆在首位一个单独的数组;你可以炭通过炭直接访问字符串)
在TP中,他最有可能使用短弦,它是默认的“字符串”。没有setlength,长度赋值是s [0]:= chr(len); –
@Marco:'SetLength'用于动态数组,而不是字符串,我在第一段中介绍了更老的固定长度数组。 :)将零字节设置为一个值不会设置数组的大小,只能是短字符串的大小。 'Length(s)'适用于'ShortString'和现代字符串。 –
你在用什么语言? –
Turbo Pascal .. –
此页面可能会帮助你http://math.uww.edu/~harrisb/courses/cs171/strings.html –