/// <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()); }
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()); }