zoukankan      html  css  js  c++  java
  • 在Axapta中实现split函数

    在Axapta中没有找到类似于C#中的split函数,在SQL Server中也没有类似的函数,当初写SQL函数的时候用了SQL Server中的系统函数charindex和substr来实现这样的功能,于是首先想到了用函数strFind和subStr来实现split函数.下列代码可以分解一个字符串并打印:

    static void split(Args _args)
    {
        
    int position;
        str srcStr;
        ;
        srcStr 
    = "AA,BB,CC,";

        
    while(true)
        
    {
            position 
    = strFind(srcStr,",",1,strlen(srcStr));
            
            
    if(!position)
            
    {
                print(srcStr);
                
    break;
            }


            print(subStr(srcStr,
    1,position-1));
            srcStr 
    = subStr(srcStr,position+1,strlen(srcStr)-position);
        }

        pause;

    }
    上面的代码显得臃肿并且很容易出错,因为要考虑边界情况,如果用Axapta中的Container实现这个功能就优雅得多,代码如下:
    static void Split2(Args _args)
    {
        Container c;
        str srcStr;
        
    int i;
        ;
        srcStr 
    = "AA,BB,CC,";

        c 
    = Global::str2con(srcStr,",");
        
    for(i=1;i<=conlen(c);i++)
        
    {
            print(conpeek(c,i));
        }

        pause;


    }
    当然如果查看str2con的代码就会知道,str2con也是用了strScan和substr对字符串进行分析处理,不过眼不见心不烦,不是吗?呵呵.另外str2con用函数match判断了字符串如果可以转换成数字,就会把字符串转换成数字,这点不够可爱,可以自己写一个str2conXpp之类的,把这个match去掉.
  • 相关阅读:
    UVA
    剑指offer 面试题11
    SharePoint 2013+ Sqlserver 2014 Kerberos 配置传奇, 最终的解决方案 验证。
    ASC(1)G(上升时间最长的序列)
    J2EE它是一个框架?平台?规范?
    C++和python使用struct传输二进制数据结构来实现
    前端开发面试题集(二)
    C语言中<CR>是什么意思
    Delphi ParamStr 使用方法
    打包工具 使用帮助 inno setup
  • 原文地址:https://www.cnblogs.com/Farseer1215/p/502468.html
Copyright © 2011-2022 走看看