JS 구현 중 영문 혼합 문자 넘 침 우호 캡 처 기능

문자열 을 표시 할 때 문자열 이 너무 길 지 않도록 문자열 을 캡 처 합 니 다.보통 js 의 substr 또는 substring 방법,문자열 의 length 속성 을 사용 합 니 다.
substr()방법 은 start 아래 표 시 된 지정 한 수의 문 자 를 문자열 에서 추출 할 수 있 습 니 다.
substring()방법 은 문자열 에서 두 개의 지정 한 아래 표 사이 에 있 는 문 자 를 추출 하 는 데 사 용 됩 니 다.
중국어 가 아 닌 문자열 처 리 는 간단 하지만 중국어 문자 의 length  속성 값 은 1  2 가 아니 라 처리 가 우호 적 이지 않 습 니 다.  
예컨대  문자열 이 있 습 니 다.   'abcdefg 와   '나 는 중화 인민공화국 을 사랑한다.
너 는 단지 다섯 자리 의 길 이 를 표시 하고 싶 을 뿐,왕왕 이렇게 조작 할 수 있다  str = str.substr(0, 5);그러나'abcde'는'중국 사람 을 사랑 합 니 다'가 차지 하 는 너비 와 다 릅 니 다.중국 어 는 흔히 2 바이트 를 차지 하기 때문에 효과 가 더 좋 음 을 나타 내기 위해 다음 과 같은 함 수 를 밀봉 합 니 다.

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>JS                 </title>
</head>
<body>
<script>
 /**
  * JS                 
  * @param text    
  * @param length     
  */
 var zfc = {};
 zfc.mixTextOverflow = function (text, length) {
  if (text.replace(/[\u4e00-\u9fa5]/g, 'aa').length <= length) {
   return text
  } else {
   var _length = 0
   var outputText = ''
   for (var i = 0; i < text.length; i++) {
    if (/[\u4e00-\u9fa5]/.test(text[i])) {
     _length += 2
    } else {
     _length += 1
    }
    if (_length > length) {
     break
    } else {
     outputText += text[i]
    }
   }
   return outputText + '...'
  }
 }
 console.log(zfc.mixTextOverflow('  NEW SAT essay        ', 12))
</script>
</body>
</html>
출력 결과:

총결산
위 에서 말씀 드 린 것 은 편집장 님 께 서 소개 해 주신 JS 실현 중 영문 혼합 문자 에 우호 적 인 캡 처 기능 이 넘 쳐 여러분 께 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.편집장 님 께 서 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기