2013-11-04 57 views
0

我试图找到解决办法,我怎么可以拆分字符串是这样的:由字符帕斯卡尔 - 拆分字符串数组由每个字符

abkgwvc 

array?预期的输出是:

array[0] = a 
array[3] = g 
... 

有什么想法吗?


for i := 0 to length(string) do 
begin 
    array[i] = copy(string, i, 1); 
end; 
+0

你在用什么语言? –

+0

Turbo Pascal .. –

+0

此页面可能会帮助你http://math.uww.edu/~harrisb/courses/cs171/strings.html –

回答

6

字符串可以作为直接的字符数组被访问,所以没有必要使用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; 

(当然,如果你使用动态数组是,目前还不清楚为什么你需要摆在首位一个单独的数组;你可以炭通过炭直接访问字符串)

+0

在TP中,他最有可能使用短弦,它是默认的“字符串”。没有setlength,长度赋值是s [0]:= chr(len); –

+0

@Marco:'SetLength'用于动态数组,而不是字符串,我在第一段中介绍了更老的固定长度数组。 :)将零字节设置为一个值不会设置数组的大小,只能是短字符串的大小。 'Length(s)'适用于'ShortString'和现代字符串。 –