>  기사  >  웹 프론트엔드  >  javascript_javascript 스킬에서 중국어와 영어가 혼합된 문자열의 길이를 얻는 방법

javascript_javascript 스킬에서 중국어와 영어가 혼합된 문자열의 길이를 얻는 방법

WBOY
WBOY원래의
2016-05-16 17:03:231467검색

한 동료가 회사 OA에 자바스크립트에서 중국어와 영어가 혼합된 문자열의 길이를 구하는 방법을 소개하는 글을 올렸습니다.

은 정규 표현식을 사용합니다.

코드 복사 코드는 다음과 같습니다.

var str = "tank는 음역입니다. 탱크";
var len = str.match(/[^ -~]/g) == null ? str.length : str.length str.match(/[^ -~]/g).length ;

책을 확인하고 조금 알아냈습니다.

일반적으로 사용되는 서양 문자 집합은 공백 " "(0x20)부터 "~"(0x7e)까지로 구성됩니다. 이 문자 집합 외부에 속합니다. 정규식 [^ -~]는 "~"에 대한 공백을 제외한 문자 집합을 나타냅니다.
코드 복사 코드는 다음과 같습니다.

string.match(regex)는 문자를 반환합니다. 배열 형태로 문자열은 정규 표현식 regex의 하위 문자열과 일치합니다. 따라서
str.match(/[^ -~]/g)는 한자를 배열 형태로 하나씩 반환합니다. 예를 들어
var str = "dd Brother";//"big Brother" 표시, 배열에 두 개의 한자를 반환하고 배열 길이는 2입니다.
alert(str.match(/[^ - ~] /g));

이런 식으로 var len = str.match(/[^ -~]/g) == null ? str.length : str.length str.match (/[^ -~]/g).length ;str의 올바른 길이를 얻을 수 있습니다.

자바스크립트에서도 한자의 길이를 1로 계산하는데, 이로 인해 데이터베이스에 제출할 때 표준 길이를 초과하는 오류가 자주 발생하는데요. 이제 이 방법을 사용하면 제출하기 전에 확인할 수 있습니다.

참고: 위 코드의 일부 기호에 문제가 있어 수정 후 다음 기능으로 변경되었습니다.

코드 복사 코드는 다음과 같습니다.
function get_strlength(str)
{
var len = 0;

if (str.match(/[^ -~]/g) == null)
{
len = str.length
}
else
{
len = str.length str.match(/[^ -~]/g).length
}

return len; 🎜>

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.