X++ StrFix方法
Global类里提供了两个方法strRFix和strLRfix,方法的实现如下:
1 static str strRFix(str _str, int _length, char _char = ' ') 2 { 3 return strRep(_char, _length - strLen(_str)) + subStr(_str, 1, _length); 4 } 5 static str strLFix(str _str, int _length, char _char = ' ') 6 { 7 return subStr(_str, 1, _length) + strRep(_char, _length - strLen(_str)); 8 }
我一直理解这个这两个方法是用来补位的,就是某个字符串长度如果不够某个长度,就用某个字符补齐到这个长度,跟C#的字符串方法PadLeft和PadRight是一样的。
实际上用了这么多年也一直是没问题的,所以也从来没去看这个方法的源码和方法说明。
直到最近遇到一个情况,传入的字符串的长度小于了指定的长度,C#里的PadLeft和PadRight的逻辑是如果遇到这种情况是直接返回源字符串的。
而X++里的StrRFix和strLFix的逻辑是如果遇到这种情况,它就变成subStr了。
所以常用的方法,还是要看方法说明,不能想当然,不过这个strRFix和strLFix搞成这样也是醉了,你一个方法就干一个事就得了,补位补位,截位就截位,合在一起埋个坑有意思?