ile rpg中如何判断一个字符串是否全是由0-9数字组成的?

发布于 2022-08-21 15:27:02 字数 31 浏览 7 评论 9

ile rpg中如何判断一个字符串是否全是由0-9数字组成的?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

萌吟 2022-09-04 19:58:21

%TESTN

薯片软お妹 2022-09-04 19:58:18

本帖最后由 passthru 于 2010-03-07 05:53 编辑

回复  passthru

本帖最后由 passthru 于 2010-03-03 17:57 编辑

d c@String          s      1000 ...
wyd1003 发表于 2010-03-03 22:01

    小数点不算错误字符。

    你这个问题其实是两个问题:1)数字与字符混合的判别;2)数字与其它字符的判别。
如果你想简单有效把这两类数据都做一类判别操作,可以这样做:

d c@Strint                      s                        1000         varying
d s@n                            s                            32s12    inz
    ......
      monitor ;
           s@n = %dec(c@String:32:12) ;
         on-error ;
           //非数字字符串
    endmon ;
   .....

污味仙女 2022-09-04 19:58:07

TESTN就可以
注意指示器位置
自己试一下就明白了

椵侞 2022-09-04 19:47:36

回复 5# passthru

本帖最后由 passthru 于 2010-03-03 17:57 编辑

d c@String          s      1000     varying
d c@String2        s      1000     varying
d lo                     c                   'abcdefghijklmnopqrstuvwxyz'
d hi                     c                   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

     .....
     c@String2 = c@String ;
     //小写变大写
     c@String2 = %Xlate(lo:hi:c@String2);
     if c@String <> c@String2 ;
           //字段有字符
     else ;
          //大写变小写
        c@String2 = %Xlate(hi:lo:c@String2);
            if c@String <> c@String2 ;
                  //字段有字符
        else ;
                 //都是数字组成的字符串
        endif ;
     endif ;
如果字符串里还有其他的字符怎么办??如, .  @ 等等之类的特俗字符。

命硬 2022-09-04 19:24:38

本帖最后由 insmile 于 2010-03-03 20:38 编辑

哪里这么麻烦?

就用操作码TESTN就可以了

不过要注意指示器的用法(自己看参考资料,说不清楚)

还有就是最后一位如果是字符的话可能检查不了,需要另外的手段检查

具体自己写测试程序就知道了

ps:检测一个字符是否全部是数字,情况很复杂的,楼上的好像没有考虑空格吧,而且有可能非法字符,乱七八糟混在一起,一个一个字符拆出来判断很麻烦滴

ILE RPG Reference.pdf  里的例子

未命名.jpg (114.45 KB, 下载次数: 9)

下载附件

2010-03-03 20:29 上传

指尖上得阳光 2022-09-04 18:30:51

本帖最后由 passthru 于 2010-03-03 17:57 编辑

d c@String          s      1000     varying
d c@String2        s      1000     varying
d lo                     c                   'abcdefghijklmnopqrstuvwxyz'
d hi                     c                   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

     .....
     c@String2 = c@String ;
     //小写变大写
     c@String2 = %Xlate(lo:hi:c@String2);
     if c@String <> c@String2 ;
           //字段有字符
     else ;
          //大写变小写
        c@String2 = %Xlate(hi:lo:c@String2);
            if c@String <> c@String2 ;
                  //字段有字符
        else ;
                 //都是数字组成的字符串
        endif ;
     endif ;

白云不回头 2022-09-04 16:35:35

本帖最后由 passthru 于 2010-03-03 17:26 编辑

c@string                       s                   1000        varying
s@pos                         s                         3s  0  inz
c@digit                        c                                   const('0123456789')
       .....
       s@pos =   %scan(c@digit : c@string) ;
       if  s@pos > 0  and
           %len(%trim(c@string)) = %len(c@digit) ;
            //字段是'0123456789'
       else ;
        //字段不是'0123456789'
       endif ;
     .....

夏の忆 2022-08-28 13:45:09

遍历其中每一个字符然后去一个由‘0123456789’的字符串里找
george251 发表于 2010-03-03 16:38

   在没有简单点的了么?

玻璃人 2022-08-28 08:57:07

遍历其中每一个字符然后去一个由‘0123456789’的字符串里找

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文