text.js 2.6 KB

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