ile rpg中如何判断一个字符串是否全是由0-9数字组成的?
ile rpg中如何判断一个字符串是否全是由0-9数字组成的?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
ile rpg中如何判断一个字符串是否全是由0-9数字组成的?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(9)
%TESTN
本帖最后由 passthru 于 2010-03-07 05:53 编辑
小数点不算错误字符。
你这个问题其实是两个问题: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 ;
.....
TESTN就可以
注意指示器位置
自己试一下就明白了
回复 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 ;
如果字符串里还有其他的字符怎么办??如, . @ 等等之类的特俗字符。
本帖最后由 insmile 于 2010-03-03 20:38 编辑
哪里这么麻烦?
就用操作码TESTN就可以了
不过要注意指示器的用法(自己看参考资料,说不清楚)
还有就是最后一位如果是字符的话可能检查不了,需要另外的手段检查
具体自己写测试程序就知道了
ps:检测一个字符是否全部是数字,情况很复杂的,楼上的好像没有考虑空格吧,而且有可能非法字符,乱七八糟混在一起,一个一个字符拆出来判断很麻烦滴
ILE RPG Reference.pdf 里的例子
未命名.jpg (114.45 KB, 下载次数: 9)
下载附件
2010-03-03 20:29 上传
本帖最后由 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 ;
本帖最后由 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 ;
.....
在没有简单点的了么?
遍历其中每一个字符然后去一个由‘0123456789’的字符串里找