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搞成这样也是醉了,你一个方法就干一个事就得了,补位补位,截位就截位,合在一起埋个坑有意思?

原文地址:https://www.cnblogs.com/Farseer1215/p/13163321.html