RPGLE中如何根据变量内容中的某个符号来细分字符串变量的内容
How to subdivide the contents of a string variable based on a certain symbol in the content of the variable in RPGLE
假设我在 RPGLE 中有一个字符串变量。变量的内容是"Hi;this;is;Kunal;Roy"。如何根据符号拆分字符串的内容 ;
我想要将值 Hi 、 this 、 is 、 Kunal 、 Roy 分开并存储在其他变量中。
谁能推荐一个在 rpgle 中做这件事的简单方法。
有很多不同的方法来处理这个问题。一种解决方案是使用 C 函数 strtok 或 strtok_r。您也可以编写自己的程序。
服务程序Linked List和Arraylist(来自rpgnextgen.com)都有一个拆分过程,将字符串拆分并存储在列表中。可以在 http://iledocs.rpgnextgen.com 找到这两个服务程序的文档。
**FREE
ctl-opt dftactgrp(*no) actgrp(*caller) bnddir('GLOBAL');
/include 'arraylist/arraylist_h.rpgle'
main();
*inlr = *on;
dcl-proc main;
dcl-s list pointer;
dcl-s text varchar(50);
dcl-s part varchar(50);
text = 'Hi;this;is;Kunal;Roy';
list = arraylist_split(text);
part = arraylist_getString(list : 0);
dsply part;
arraylist_dispose(list);
end-proc;
您可以使用包管理器轻松安装这些服务程序iPKG from the repo at https://repo.rpgnextgen.com。
有一个 RPG 的 RFE 关于拆分字符串,您可以投票给它:
"New built-in function %SPLIT":
http://www.ibm.com/developerworks/rfe/execute?use_case=viewRfe&CR_ID=108424
这个问题问得好
您可以定义一个数组来填充然后遍历字符串
D ArMax c 10
D ArVal S dim(ArMax) like($MyString)
c movel ';' $Symbol 1
c z-add 1 $Start 3 0
c *like define $Start $Pos
c *like define $Start @@count
$MyString = 'Hi;this;is;Kunal;Roy';
$pos = %scan($Symbol: $MyString:$start);
dow $pos > 0;
@@count = @@count +1;
ArVal(@@Count) = %subst($MyString:$Start:$pos-$Start);
$start = $pos +1;
$pos = %scan($Symbol: $MyString:$Start);
enddo;
假设我在 RPGLE 中有一个字符串变量。变量的内容是"Hi;this;is;Kunal;Roy"。如何根据符号拆分字符串的内容 ;
我想要将值 Hi 、 this 、 is 、 Kunal 、 Roy 分开并存储在其他变量中。
谁能推荐一个在 rpgle 中做这件事的简单方法。
有很多不同的方法来处理这个问题。一种解决方案是使用 C 函数 strtok 或 strtok_r。您也可以编写自己的程序。
服务程序Linked List和Arraylist(来自rpgnextgen.com)都有一个拆分过程,将字符串拆分并存储在列表中。可以在 http://iledocs.rpgnextgen.com 找到这两个服务程序的文档。
**FREE
ctl-opt dftactgrp(*no) actgrp(*caller) bnddir('GLOBAL');
/include 'arraylist/arraylist_h.rpgle'
main();
*inlr = *on;
dcl-proc main;
dcl-s list pointer;
dcl-s text varchar(50);
dcl-s part varchar(50);
text = 'Hi;this;is;Kunal;Roy';
list = arraylist_split(text);
part = arraylist_getString(list : 0);
dsply part;
arraylist_dispose(list);
end-proc;
您可以使用包管理器轻松安装这些服务程序iPKG from the repo at https://repo.rpgnextgen.com。
有一个 RPG 的 RFE 关于拆分字符串,您可以投票给它:
"New built-in function %SPLIT": http://www.ibm.com/developerworks/rfe/execute?use_case=viewRfe&CR_ID=108424
这个问题问得好
您可以定义一个数组来填充然后遍历字符串
D ArMax c 10
D ArVal S dim(ArMax) like($MyString)
c movel ';' $Symbol 1
c z-add 1 $Start 3 0
c *like define $Start $Pos
c *like define $Start @@count
$MyString = 'Hi;this;is;Kunal;Roy';
$pos = %scan($Symbol: $MyString:$start);
dow $pos > 0;
@@count = @@count +1;
ArVal(@@Count) = %subst($MyString:$Start:$pos-$Start);
$start = $pos +1;
$pos = %scan($Symbol: $MyString:$Start);
enddo;