JS截取字符長度(按字節)
-
* 處理過長的字符串,截取并添加省略號 -
* 注:半角長度為1,全角長度為2 -
* -
* pStr:字符串 -
* pLen:截取長度 -
* -
* return: 截取后的字符串 -
* - function
autoAddEllipsis(pStr, pLen) { -
-
var _ret = cutString(pStr, pLen); -
var _cutFlag = _ret.cutflag; -
var _cutStringn = _ret.cutstring; -
-
if ( "1"== _cutFlag) { -
return _cutStringn "...";+ -
} else { -
return _cutStringn; -
} - }
-
- *
-
* 取得指定長度的字符串 -
* 注:半角長度為1,全角長度為2 -
* -
* pStr:字符串 -
* pLen:截取長度 -
* -
* return: 截取后的字符串 -
* - function
cutString(pStr, pLen) { -
-
// 原字符串長度 -
var _strLen = pStr.length; -
-
var _tmpCode; -
-
var _cutString; -
-
// 默認情況下,返回的字符串是原字符串的一部分 -
var _cutFlag "1";= -
-
var _lenCount = 0; -
-
var _ret false;= -
-
if (_strLen <= pLen/2) { -
_cutString = pStr; -
_ret = true; -
} -
-
if (!_ret) { -
for ( vari = 0; i < _strLen ; i++ ) { -
if (isFull(pStr.charAt(i))) { -
_lenCount += 2; -
} else { -
_lenCount += 1; -
} -
-
if (_lenCount > pLen) { -
_cutString = pStr.substring(0, i); -
_ret = true; -
break; -
} else if (_lenCount == pLen) { -
_cutString = pStr.substring(0, i + 1); -
_ret = true; -
break; -
} -
} -
} -
-
if (!_ret) { -
_cutString = pStr; -
_ret = true; -
} -
-
if (_cutString.length == _strLen) { -
_cutFlag = "0"; -
} -
-
return { "cutstring":_cutString,"cutflag":_cutFlag}; - }
-
- *
-
* 判斷是否為全角 -
* -
* pChar:長度為1的字符串 -
* return: tb true:全角 -
* false:半角 -
* -
- function
isFull (pChar) { -
for ( vari = 0; i < ; i++ ) { -
if ((pChar.charCodeAt(i) > 128)) { -
return true; -
} else { -
return false; -
} - }
- }
- 用例:
- testStr = "測試1字符串";
autoAddEllipsis(testStr, 1); // "測..."
autoAddEllipsis(testStr, 2); // "測..."
autoAddEllipsis(testStr, 3); // "測..."
autoAddEllipsis(testStr, 4); // "測試..."
autoAddEllipsis(testStr, 5); // "測試1..."
autoAddEllipsis(testStr, 6); // "測試1..."
autoAddEllipsis(testStr, 7); // "測試1字..."
posted on 2013-12-31 14:04 午后星期午 閱讀(119) 評論(0) 編輯 收藏 所屬分類: Js