PCLの例です.
というより,自作の関数群やちょっとした使い方になるかな.
ダウンロードできるファイルの方では,変数名が重複しないように,すべての変数名の前にSERIKA_を付けています.
文字列(string)と文字(int)を与えると,文字列の中に指定された文字が何個あるか数え上げて,その数を返します.
1: # count.pcl
2: sub
3: int count(string str, int target)
4: begin
5: int num = 0;
6:
7: loop
8: int i = 1;
9: until
10: i > str.count()
11: begin
12: if(str[i] == target) then
13: num = num + 1;
14: end;
15: i = i + 1;
16: end;
17: return num;
18: end;
デリミタ(int)で文字列(string)を分解し,指定された番目(int)の部分文字列を返します.
1: # part.pcl
2: sub
3: string part(string str, int _delimiter, int index)
4: begin
5: int i;
6: int j;
7:
8: loop
9: i = 1;
10: until
11: index <= 1 ||
12: i >= str.count()
13: begin
14: if(str[i] == delimiter) then
15: index = index - 1;
16: end;
17: i = i + 1;
18: end;
19:
20: if(i == str.count()) then
21: return ""; # 見つからなかった
22: else
23: loop
24: j = i;
25: int flag = 0;
26: until
27: flag == 1 ||
28: j > str.count()
29: begin
30: if(str[j] == delimiter) then
31: flag = 1;
32: j = j - 1;
33: end;
34: j = j + 1;
35: end;
36: end;
37:
38: j = j - i;
39:
40: return str.substring(i, j);
41: end;
デリミタ(int)で文字列(string)を分解し,配列を返します.
この関数は,上記のcountとpartを使っています.
1: # split.pcl
2: sub
3: arraysplit(string str, int delimiter)
4: begin
5: int size = count(str, delimiter);
6: arraylist[size];
7:
8: loop
9: int i = 1;
10: until
11: i > size
12: begin
13: list[i] = part(str, delimiter, i);
14: i = i + 1;
15: end;
16:
17: return list;
18: end;