【问题标题】:mumps lanaguage FOR loop related腮腺炎语言 FOR 循环相关
【发布时间】:2011-05-19 21:11:05
【问题描述】:

如果我现在定义 For K="ABC":1:3 "ABC" 的值是什么,循环如何执行 "ABC" 或者如果我采用任何 "string" 来代替那个 ABC,如何增加字符串“ABC”。

大佬

【问题讨论】:

    标签: mumps


    【解决方案1】:

    MUMPS 通过从左到右读取字符串将字符串转换为数值。它将使用任何数字以及在结果数字中遇到的第一个句点,并将在第一个非数字字符处停止。

    字符串到数字的转换示例:

    字符串 -> 数字
    “1234”-> 1234
    “1234A”-> 1234
    “1234A4321”-> 1234
    "" -> 0
    “A”-> 0
    “ABC”-> 0

    【讨论】:

    • 至于你的信息,我得到的任何字符/字符串都将转换为 0
    【解决方案2】:

    如果您可以访问 MUMPS 系统,则很容易找到。只需运行以下例程,它可以驻留在例如在 for3.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 内森

    【讨论】:

      【解决方案3】:

      如果你想遍历字符串“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="Name|Age|Sex" 您可以通过以下方式写出每个字段:

      S STR="NAME|AGE|SEX"
      F I=1:1:$L(STR,"|") W $P(STR,"|",1),!
      

      这里 $L 将返回 3,for 循环将迭代 3 次。

      $P 函数 ($Piece) 将使用竖线字符 (|) 作为字段分隔符从 STR 中提取每个字段,然后我确定要返回的字段。

      希望这会有所帮助...

      鬼脸

      【讨论】:

        【解决方案4】:

        非常抱歉格式混乱。过失!

        节目清单应该是:

        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
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-03-23
          • 1970-01-01
          • 2018-10-02
          • 2021-03-06
          相关资源
          最近更新 更多