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;
}
第一个参数是要处理的字符串,第二个参数是要把字符串补齐到多少位,第三个参数是用哪个字符补齐。
{
;
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的缩写,比如如下代码:
{
return strrep(_char, _length - strlen(_str)) + substr(_str, 1, _length);
}
static
void
strRepDemo(Args _args)
{
;
print strRep("Hello World",2);
pause;
}
的输出为HelloWorld HelloWorld,第二个参数是复制次数的意思,这里指定为2,所以把源字符串复制了2遍。
{
;
print strRep("Hello World",2);
pause;
}
于是我们不难看出,strRFix实际上由两部分组成strRep和subStr,如果调用strRFix函数时第二个参数的长度比源字符串的长度短的话,显然strRep的第二个参数就是负数了,这样该函数返回为空,而只有subStr返回值,这样实际上就等效于subStr了,只不过是从源字符串左边开始截取的。