ホームページ  >  記事  >  ウェブフロントエンド  >  javascript_javascript スキルで中国語と英語が混在した文字列の長さを取得する方法

javascript_javascript スキルで中国語と英語が混在した文字列の長さを取得する方法

WBOY
WBOYオリジナル
2016-05-16 17:03:231466ブラウズ

同僚が会社の OA に投稿し、JavaScript で中国語と英語が混在する文字列の長さを取得する方法を紹介しました。

は正規表現を使用します。

コードをコピー コードは次のとおりです:

var str = "tank は、tank の音訳です。タンク";
var len = str.match(/[^ -~]/g) == null ? str.length : str.length str.match(/[^ -~]/g).length ;

本を調べて少し理解しました:

一般的に使用される欧文文字セットは、スペース " " (0x20) から "~" (0x7e) で構成されます。正規表現 [^ -~] は、スペースから "~" までを除く文字セットを表します。
コードをコピー コードは次のとおりです。

string.match(regex) は文字を返します。配列の形式で文字列は正規表現 regex の部分文字列と一致します。 したがって、
str.match(/[^ -~]/g) は配列の形式で中国語の文字を 1 つずつ返します。例:
var str = "dd Brother";
//「兄」を表示し、配列内の 2 つの漢字を返します。配列の長さは 2 です。
alert(str.match(/[^ - ~] /g));

このように、 var len = str.match(/[^ -~]/g) == null : str.length str.match (/[^ -~]/g).length ;str の正しい長さを取得できます。

JavaScript では漢字の長さも 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
}

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。