Пример #1
0
        /// <summary>将驼峰格式转换成以指定字符分隔</summary>
        /// <param name="str">要转换的字符串</param>
        /// <param name="separator">分隔符</param>
        /// <returns>返回转换后的字符串</returns>
        public static string ToSeparate_(this string str, string separator = "-")
        {
            if (str.IsNullOrEmpty_())
            {
                return(string.Empty);
            }
            char[] _cs  = str.ToCharArray();
            int    _len = _cs.Length;
            char   _c;
            STR    _str = new STR((int)Math.Ceiling(_len * 1.5));

            _str += _cs[0];
            for (int i = 1; i < _len; i++)
            {
                _c = _cs[i];
                if (char.IsUpper(_c))
                {
                    _str += separator + char.ToLowerInvariant(_c);
                }
                else
                {
                    _str += _c;
                }
            }
            return(_str.ToString());
        }
Пример #2
0
        private static string ToRMB_(decimal num, string digits, string units, string err)
        {
            string _str = num.ToString("F2");
            STR    _s   = new STR();

            if (_str[0] == '-')
            {
                _s  += units[15];
                _str = _str.TrimStart('-');
            }

            string[] _parts = _str.Split('.');

            int _intLen = _parts[0].Length;

            if (_intLen > 12)
            {
                return(err);
            }
            bool _int0 = _parts[0] == "0";
            bool _dec0 = _parts[1] == "00";

            int  i, j, x, n = 0;
            bool _0 = false, _j0 = false;

            if (_int0 && _dec0)
            {
                _s += digits[0];
                _s += units[1];
            }
            else if (!_int0)
            {
                // 处理整数部分
                for (i = 0; i < _intLen; i++)
                {
                    n = Convert.ToInt32(_parts[0][i]) - 48;
                    x = _intLen - i;
                    // j = 0 时为段尾
                    j = (x - 1) & 0x3;

                    // 处理 0
                    if (n == 0)
                    {
                        _0 = true;
                        // 处理为段尾的 0
                        if (j == 0)
                        {
                            if (_intLen == 1 && _dec0)
                            {
                                _s += digits[0];
                            }
                            if (_j0 || x == 1)
                            {
                                _s += units[x];
                            }
                            _j0 = false;
                        }
                    }
                    // 处理非 0
                    else
                    {
                        if (_0)
                        {
                            _s += digits[0];
                            _0  = false;
                        }
                        _s += digits[n];
                        _s += units[x];

                        // 如果是段尾,设置非 0 标志
                        _j0 = j == 0 ? false : true;
                    }
                }
            }

            // 处理小数部分
            // 如果没有小数,添加"整"字符
            if (_dec0)
            {
                _s += units[0];
            }
            else
            {
                int g = n;

                // 角
                n = Convert.ToInt32(_parts[1][0]) - 48;
                if (n != 0)
                {
                    _s += digits[n];
                    _s += units[13];
                }
                else if (_intLen != 1 || g != 0)
                {
                    _s += digits[0];
                }

                // 分
                n = Convert.ToInt32(_parts[1][1]) - 48;
                if (n != 0)
                {
                    _s += digits[n];
                    _s += units[14];
                }
                else
                {
                    _s += units[0];
                }
            }

            return(_s.ToString());
        }