JS截取字符長(zhǎng)度(按字節(jié))
-
- *
-
* 處理過(guò)長(zhǎng)的字符串,截取并添加省略號(hào) -
* 注:半角長(zhǎng)度為1,全角長(zhǎng)度為2 -
* -
* pStr:字符串 -
* pLen:截取長(zhǎng)度 -
* -
* 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; -
} - }
-
- *
-
* 取得指定長(zhǎng)度的字符串 -
* 注:半角長(zhǎng)度為1,全角長(zhǎng)度為2 -
* -
* pStr:字符串 -
* pLen:截取長(zhǎng)度 -
* -
* return: 截取后的字符串 -
* - function
cutString(pStr, pLen) { -
-
// 原字符串長(zhǎng)度 -
var _strLen = pStr.length; -
-
var _tmpCode; -
-
var _cutString; -
-
// 默認(rèn)情況下,返回的字符串是原字符串的一部分 -
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:長(zhǎng)度為1的字符串 -
* return: tb true:全角 -
* false:半角 -
* -
- function
isFull (pChar) { -
for ( vari = 0; i < ; i++ ) { -
if ((pChar.charCodeAt(i) > 128)) { -
return true; -
} else { -
return false; -
} - }
- }
- 用例:
- testStr = "測(cè)試1字符串";
autoAddEllipsis(testStr, 1); // "測(cè)..."
autoAddEllipsis(testStr, 2); // "測(cè)..."
autoAddEllipsis(testStr, 3); // "測(cè)..."
autoAddEllipsis(testStr, 4); // "測(cè)試..."
autoAddEllipsis(testStr, 5); // "測(cè)試1..."
autoAddEllipsis(testStr, 6); // "測(cè)試1..."
autoAddEllipsis(testStr, 7); // "測(cè)試1字..."
posted on 2012-09-17 14:20 chen11-1 閱讀(2659) 評(píng)論(1) 編輯 收藏