text.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. var ELLIPSIS_CODE = '\u2026';
  2. /** 获取字符串长度 */
  3. export function strLen(str) {
  4. var len = 0;
  5. for (var i = 0; i < str.length; i++) {
  6. len += charAtLength(str, i);
  7. }
  8. return len;
  9. }
  10. /** 是否属于ASCII编码范畴 */
  11. export function charAtLength(str, i) {
  12. if (str.charCodeAt(i) > 0 && str.charCodeAt(i) < 128) {
  13. return 1;
  14. }
  15. else {
  16. return 2;
  17. }
  18. }
  19. /** 文本省略 */
  20. export function ellipsisString(str, reseveLength, position) {
  21. if (position === void 0) { position = 'tail'; }
  22. var count = str.length;
  23. var rst = '';
  24. if (position === 'tail') {
  25. for (var i = 0, index = 0; i < reseveLength;) {
  26. var charLength = charAtLength(str, index);
  27. if (i + charLength <= reseveLength) {
  28. rst += str[index];
  29. i += charAtLength(str, index);
  30. index++;
  31. }
  32. else {
  33. break;
  34. }
  35. }
  36. rst += ELLIPSIS_CODE;
  37. }
  38. else if (position === 'head') {
  39. for (var i = 0, index = count - 1; i < reseveLength;) {
  40. var charLength = charAtLength(str, index);
  41. if (i + charLength <= reseveLength) {
  42. rst += str[index];
  43. i += charAtLength(str, index);
  44. index--;
  45. }
  46. else {
  47. break;
  48. }
  49. }
  50. rst = ELLIPSIS_CODE + rst;
  51. }
  52. else {
  53. var startStr = '';
  54. var endStr = '';
  55. for (var i = 0, startIndex = 0, endIndex = count - 1; i < reseveLength;) {
  56. var startCodeLen = charAtLength(str, startIndex);
  57. var hasAdd = false; // 设置标志位,防止头尾都没有附加字符
  58. if (startCodeLen + i <= reseveLength) {
  59. startStr += str[startIndex];
  60. startIndex++;
  61. i += startCodeLen;
  62. hasAdd = true;
  63. }
  64. var endCodeLen = charAtLength(str, endIndex);
  65. if (endCodeLen + i <= reseveLength) {
  66. endStr = str[endIndex] + endStr;
  67. i += endCodeLen;
  68. endIndex--;
  69. hasAdd = true;
  70. }
  71. if (!hasAdd) {
  72. // 如果都没有增加字符,说明都不适合则中断
  73. break;
  74. }
  75. }
  76. rst = startStr + ELLIPSIS_CODE + endStr;
  77. }
  78. return rst;
  79. }
  80. //# sourceMappingURL=text.js.map