如果我定义For K =“ABC”:1:3现在什么是“ABC”的值,如果我采取任何“字符串”,循环如何执行“ABC”或代替ABC,增量如何字符串“ABC”。
的BHA
答案 0 :(得分:5)
MUMPS通过从左到右读取字符串将字符串转换为数字值。它将使用任何数字及其在结果数字中遇到的第一个句点,它将停在第一个非数字字符处。
字符串到数字转换的示例:
字符串 - >数
“1234” - > 1234
“1234A” - > 1234
“1234A4321” - > 1234
“” - > 0
“A” - > 0
“ABC” - > 0
答案 1 :(得分:3)
如果您可以访问MUMPS系统,那么找到它是微不足道的。只需运行以下例程,例如在3.m的文件中:
for3
; routine to test FOR command
FOR K="ABC":1:3 WRITE "K=",K,! QUIT
在我的Linux机器上,我安装了GT.M.你可以得到它 http://sourceforge.net/projects/fis-gtm/
这是输出:
$ gtm -run for3
K=0
K=1
K=2
K=3
HTH 森
答案 2 :(得分:2)
如果你想迭代字符串“ABC”,你可以这样做:
S STR="ABC"
F I=1:1:$L(STR) W $E(STR,I,I),!
$ L($ Length)函数将返回STR的长度。在这种情况下3,所以for循环只迭代3次。
$ E($ Extract)函数将提取STR的子字符串。 $ E的第一个参数是要从中提取的字符串。第二个参数是起始位置,第三个参数是子字符串的结束位置。在这种情况下,我指定相同的开始和结束位置,以便每次提取一个字符。
您还可以指定字段分隔符作为$ L函数的第二个参数。因此,如果STR =“姓名|年龄|性别”,您可以通过以下方式写出每个字段:
S STR="NAME|AGE|SEX"
F I=1:1:$L(STR,"|") W $P(STR,"|",1),!
这里$ L将返回3并且for循环将迭代3次。
$ P函数($ Piece)将使用管道符(|)作为字段分隔符从STR中提取每个字段,并确定要返回的字段。
希望这会有所帮助......
igotmumps
答案 3 :(得分:1)
非常抱歉这种格式化。 Mea culpa!
程序清单应该是:
for3
; routine to test FOR command
FOR K="ABC":1:3 WRITE "K=",K,! QUIT
输出应该是:
$ gtm -run for3
K=0
K=1
K=2
K=3