|
|
- // @ts-nocheck
- /**
- * 计算字符串字符的长度并可以截取字符串。
- * @param char 传入字符串(maxcharacter条件下,一个汉字表示两个字符)
- * @param max 规定最大字符串长度
- * @returns 当没有传入maxCharacter/maxLength 时返回字符串字符长度,当传入maxCharacter/maxLength时返回截取之后的字符串和长度。
- */
- export type CharacterLengthResult = {
- length : number;
- characters : string;
- }
- // #ifdef APP-ANDROID
- type ChartType = any
- // #endif
- // #ifndef APP-ANDROID
- type ChartType = string | number
- // #endif
-
- export function characterLimit(type : string, char : ChartType, max : number) : CharacterLengthResult {
- const str = `${char}`;
-
- if (str.length == 0) {
- return {
- length: 0,
- characters: '',
- } as CharacterLengthResult
- }
-
- if (type == 'maxcharacter') {
- let len = 0;
- for (let i = 0; i < str.length; i += 1) {
- let currentStringLength : number// = 0;
- const code = str.charCodeAt(i)!
- if (code > 127 || code == 94) {
- currentStringLength = 2;
- } else {
- currentStringLength = 1;
- }
- if (len + currentStringLength > max) {
- return {
- length: len,
- characters: str.slice(0, i),
- } as CharacterLengthResult
- }
- len += currentStringLength;
- }
- return {
- length: len,
- characters: str,
- } as CharacterLengthResult
- } else if (type == 'maxlength') {
- const length = str.length > max ? max : str.length;
- return {
- length: length,
- characters: str.slice(0, length),
- } as CharacterLengthResult
- }
-
- return {
- length: str.length,
- characters: str,
- } as CharacterLengthResult
- };
|