X++中对字符串进行操作的函数
每个语言中都会有很方便的操作字符串的函数库,可惜在X++的教程中没有看到这个函数库的列表,下面的函数是在看源代码的过程中发现的,汇集如下:
1.strlen(str text)
作用:获取字符串的长度
参数:text,待获取长度的字符串
返回值:字符串的长度
static void strlenExample(Args _args)
{
str source;
int i ;
;
source = "Axapta";
i = strlen(source);
print i;
pause;
}
2.strfind(str source,str toFindCharacters,int position ,int number)
作用:发现某个字符的位置
参数:source 源字符串
toFindCharaters:待发现的字符
position:开始搜索的位置
number:搜索字符的个数
返回值:字符的位置
static void strfindExample(Args _args)
{
str source;
str destination;
int i ;
;
source = "Axapta Axapta";
destination = 'x';
i = strfind(source,destination,3,100);
print i;
pause;
}
3.strins(str source ,str toInsertStr,int postion)
作用:在源字符串的指定位置插入字符串
参数:source 源字符串
toInsertStr 待插入的字符串
postion 插入字符串的位置
返回值:插入字符串后的字符串
static void strinsExample(Args _args)
{
str source;
str destination;
int i ;
;
source = "Axapta Axapta";
destination = ' Axapta';
source = strins(source,destination,7);
print source;
pause;
}
4.strdel(str source,int postion,int number)
作用:从指定位置开始在源字符串中删除指定长度的字符
参数:source源字符串
postion 删除的开始位置
number 删除字符的个数
返回值:删除指定字符后的字符串
static void strdelExample(Args _args)
{
str source;
str destination;
int i ;
;
source = "Axapta Axapta";
source = strdel(source,1,7);
print source;
pause;
}
5.strLFix,strRFix
这个难得说清楚,看代码吧,一看就明白了。
static void SpecialQueryBuild2()
{
str newStr;
;
newStr = strLfix(int2str(8),10,"0");
print(newStr);
newStr = strRfix(int2str(8),10,"0");
print(newStr);
pause;
}
经常要用到一些字符串的处理函数,前段时间写过一些,这里再补充几个,虽然简单,但用的时候一时想不起来就要自己重写一个也是比较浪费时间的事。
Global类里有几个字符串处理的静态方法,可以全局调用的。
strLFix,strRFix,strRep
这两个函数可以用做用特定的字符补齐的函数,不满多少位的时候就用特定的字符补齐,比如数字如果不满三位就用前置0或者后置0补齐。如果想在前面用0补齐,就用strRFix,如果想在后面用0补齐,就用strLFix。看看代码吧:
当数字长度不满足三位的时候就用前置0补齐,比如3就补齐成003,如果是13就补齐成013,如果是130就保持不变。
static void strRFixDemo(Args _args)
{
;
print strRFix('3',3,'0');
print strRFix('13',3,'0');
print strRFix('130',3,'0');
pause;
}
第一个参数是要处理的字符串,第二个参数是要把字符串补齐到多少位,第三个参数是用哪个字符补齐。
如果要处理的字符串的长度比第二个参数大的话,会怎么处理那?我们看一下这个方法的源代码吧:
static str strRFix(str _str, int _length, char _char = ' ')
{
return strrep(_char, _length - strlen(_str)) + substr(_str, 1, _length);
}
substr这个函数很容易理解就是取字符串的一部分,而strRep这个方法是什么?在很多语言里,这个方法是字符串替换函数,即用指定的字符串替换换字符串中部分内容,但在AX里用strReplace这个函数来实现这个功能,strRep这个函数实际上是复制的功能,Rep我想应该是Replicate的缩写,比如如下代码:
static void strRepDemo(Args _args)
{
;
print strRep("Hello World",2);
pause;
}
的输出为HelloWorld HelloWorld,第二个参数是复制次数的意思,这里指定为2,所以把源字符串复制了2遍。
于是我们不难看出,strRFix实际上由两部分组成strRep和subStr,如果调用strRFix函数时第二个参数的长度比源字符串的长度短的话,显然strRep的第二个参数就是负数了,这样该函数返回为空,而只有subStr返回值,这样实际上就等效于subStr了,只不过是从源字符串左边开始截取的。
字符串分割问题:
static void Job5(Args _args)
{
container c;
int i;
str l = "00001,k123,k012";
c = str2con(l,",");
for (i=1;i<=conlen(c);i++)
{
info(conpeek(c,i));
}
}

浙公网安备 33010602011771号