ホームページ ウェブフロントエンド jsチュートリアル Vue を使用して表示される文字数とバイト数を制御する方法

Vue を使用して表示される文字数とバイト数を制御する方法

May 29, 2018 am 10:04 AM
キャラクター バイト コントロール

今回は、Vue を使用して表示文字数とバイト数を制御する方法と、Vue を使用して表示文字数とバイト数を制御するときの注意事項を説明します。以下は実際的なケースです。一見。

要件

要件: Vueと組み合わせると次の効果が得られます

  1. 入力ボックスには最大16文字を入力できます

  2. 最大5文字の漢字を表示でき、超過した文字は... code> でマークされている場合は <code>...显示

  3. 英文最多显示10个,超出部分以...显示

实现

搭建简单页面,并设置简单样式

在正式开始写核心代码之前,要先把代码结构搭建起来,这样后面写的时候就会看着简洁点了。

首先需要一个输入框用来输入内容,其次需要一个元素,用来显示输入框中的内容,实现数据的双向绑定。

其中,输入内容的最大长度是可以通过input标签的属性来指定的。

<p id="app">
 <input v-model="txt" class="clsinp" maxlength="16" placeholder="请输入内容" type="text">
 <p class="clsmsg">
  <p>内容:<span>{{txt}}</span></p>
  <p>输入的字符个数:<span>{{computedCharLen}}</span></p>
  <p>输入的字节个数:<span>{{computedByteLen}}</span></p>
 </p>
</p>
ログイン後にコピー
ログイン後にコピー

页面的结构已经搭建完成了,那下面就是做一些简单的样式优化了。

* { margin: 0; padding: 0; -webkit-box-sizing: border-box; box-sizing: border-box; }
body { background: #efefef; }
.clsinp { width: 100%; height: 40px; outline: none; line-height: 40px; font-size: 16px; padding: 0 10px; margin-top: 20px; color: blue; }
.clsmsg { padding: 10px 10px; }
.clsmsg span { color: blue; }
ログイン後にコピー

最后一步应该就是引入Vue,然后搭建一些简单的数据内容。

var vm = new Vue({
 el: '#app',
 data() {
  return {
   txt: ''
  }
 },
 // 后期代码在下面补充
})
ログイン後にコピー

ASCII范围内与范围外

了解ASCII的内容,请移步到http://www.asciima.com/

ASCII中包含256个字符,因此超过256之外的字符,全部都是非ASCII字符,一般情况下,汉字就是在这个范围中。

因此,编码不在0-255的字符可以使用正则表达式/[^x00-xff]/g来进行匹配。这个时候就提供了一个思路,如果不是ASCII码中的字符,那么就默认它占了两个字节。

我们修改一下页面结构,输出一些测试信息:

<p id="app">
 <input v-model="txt" class="clsinp" maxlength="16" placeholder="请输入内容" type="text">
 <p class="clsmsg">
  <p>内容:<span>{{txt}}</span></p>
  <p>输入的字符个数:<span>{{computedCharLen}}</span></p>
  <p>输入的字节个数:<span>{{computedByteLen}}</span></p>
 </p>
</p>
ログイン後にコピー
ログイン後にコピー

补充需要的计算属性:

computed: {
 // 获取字符的个数
 computedCharLen() {
  return this.txt.length
 },
 // 获取字节的个数
 computedByteLen() {
  return this.txt.replace(/[^\x00-\xff]/g, '01').length
 }
}
ログイン後にコピー

这个时候,我们输入内容,出现下面的效果:

这个时候会发现,已经实现,ASCII码范围内的占1位,超出范围的占2位。

控制显示的内容

内容显示使用计算属性来实现:

<p>内容:<span>{{computedTxt}}</span></p>
ログイン後にコピー
// 控制显示的内容
computedTxt() {
 return this.methodGetByteLen(this.txt, 10)
}
ログイン後にコピー

下面补充一下methodGetByteLen

最大 10 文字の英字が表示され、それを超える部分は ... として表示されます

実装

シンプルなページを構築し、シンプルなスタイルを設定します

コアコードを正式に書き始める前に、後でコードを書くときによりシンプルに見えるように、最初にコード構造を設定する必要があります。

まず、コンテンツを入力するための入力ボックスが必要であり、次に、データの双方向バインディングを実現するために、入力ボックスにコンテンツを表示する要素が必要です。

このうち、入力コンテンツの最大長は、input タグの属性を通じて指定できます

/**
 * str 需要控制的字符串
 * len 字节的长度,如5个汉字,10个英文,输入参数就是10
 */
methodGetByteLen(str, len) {
 // 如果字节的长度小于控制的长度,那么直接返回
 if (this.computedByteLen <= len) {
  return str
 }
 for (let i = Math.floor(len / 2); i < str.length; i++) {
  if (str.substr(0, i).replace(/[^\x00-\xff]/g, &#39;01&#39;).length >= len) {
   // Math.floor(i / 2) * 这里是控制特殊情况的显示
   // 如 '一二aaa一二三四',显示的结果就是 '一二aaa一...'
   return str.substr(0, Math.floor(i / 2) * 2) + '...'
  }
 }
}
ログイン後にコピー
ページの構造が完成したので、次のステップは簡単なスタイルの最適化を行うことです。



 
 
 
 Document
 


 

     

   <p>内容:<span>{{computedTxt}}</span></p>    

输入的字符个数:{{computedCharLen}}

   

输入的字节个数:{{computedByteLen}}

  

 

ログイン後にコピー
最後のステップは、Vue を導入し、いくつかの簡単なデータ コンテンツを構築することです。
rrreee

範囲内と範囲外の ASCII

ASCII の内容を理解するには、http://www.asciima.com/ にアクセスしてください。

ASCII には 256 文字が含まれるため、256 を超える文字はすべて非 ASCII 文字になります。通常、中国語の文字はこの範囲内にあります。
そのため、エンコードが 0-255 以外の文字は、正規表現

/[^ x00-xff]/g と一致します。このとき、アイデアが ASCII コードの文字でない場合は、デフォルトで 2 バイトを占めます。

ページ構造を変更し、いくつかのテスト情報を出力します: rrreee
必要な計算された属性を補足します:

rrreee🎜この時点で、コンテンツを入力すると、次の効果が表示されます: 🎜🎜🎜🎜この時点で実装されていることがわかります。 ASCII コード範囲は 1 ビットを占め、範囲外の場合は 2 ビットを占めます。 🎜🎜🎜表示されるコンテンツを制御する🎜🎜🎜コンテンツの表示は、計算されたプロパティを使用して実装されます: 🎜rrreeerrreee🎜 以下に methodGetByteLen メソッドが追加されます: 🎜rrreee🎜 最終的な表示は、指定された最大長を超えません🎜🎜 🎜🎜🎜指定最大長を超えました(漢字入力)🎜🎜🎜🎜🎜指定最大長を超えました(数字入力)🎜🎜🎜🎜🎜指定最大長を超えました(漢字と文字の組み合わせ)🎜🎜🎜🎜🎜 🎜🎜完全なコード🎜 🎜🎜🎜最後に、最終コードを貼り付けます: 🎜rrreee🎜 この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、PHP 中国語 Web サイトの他の関連記事に注目してください。 ! 🎜🎜推奨読書: 🎜🎜🎜WeChat ミニ プログラムのカスタム複数選択イベントを実装する方法🎜🎜🎜🎜🎜 マルチページをサポートするために create-react-app を変更する方法🎜🎜🎜

以上がVue を使用して表示される文字数とバイト数を制御する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

1MB のストレージ容量は何バイトに相当します 1MB のストレージ容量は何バイトに相当します Mar 03, 2023 pm 05:42 PM

1MB のストレージ容量は、2 の 20 乗バイト、つまり 1,048,576 バイトに相当します。 MB はコンピュータの記憶単位であり、「メガ」と発音されます。1MB は 1024KB、1KB は 1024B (バイト) に等しいため、1MB は 1048576 (1024 *1024) バイトに相当します。

128MBとは何バイトを意味しますか? 128MBとは何バイトを意味しますか? Nov 29, 2022 am 10:35 AM

128mb は 134217728 バイトを指します。バイト換算式は「1MB=1024KB=1048576B=8388608bit」です。これは、1048576 個の英字と 524288 個の漢字を保存できることを意味します。トラフィック単位の換算式は、1GB=1024MB、1MB=1024KB、1KB です。 = 1024B。

PHPでカメラを制御:接続から撮影までの全過程を解析 PHPでカメラを制御:接続から撮影までの全過程を解析 Jul 30, 2023 pm 03:21 PM

PHPでカメラを制御:接続から撮影までを解析 ビデオ通話や監視システムなど、カメラアプリケーションはますます普及しています。 Web アプリケーションでは、多くの場合、PHP を通じてカメラを制御および操作する必要があります。この記事では、カメラの接続から撮影までをPHPを使って実現する方法を紹介します。カメラの接続状態を確認する カメラを操作する前に、まずカメラの接続状態を確認する必要があります。 PHP には、カメラを操作するための拡張ライブラリ ビデオが提供されています。次のコードを渡すことができます

1 ビットは何バイトに相当します 1 ビットは何バイトに相当します Mar 09, 2023 pm 03:11 PM

1 ビットは 1 バイトの 8 分の 1 に相当します。 2 進数体系では、0 または 1 がそれ​​ぞれ 1 ビット (bit) であり、ビットはデータ記憶の最小単位であり、8 ビット (bit、略して b) ごとに 1 バイト (Byte) が構成されます。バイト) = 8 ビット」。ほとんどのコンピュータ システムでは、バイトは 8 ビット (ビット) 長のデータ単位であり、文字、数字、またはその他の文字を表すためにバイトが使用されます。

1 つの ASCII 文字は何バイトを占めますか? 1 つの ASCII 文字は何バイトを占めますか? Mar 09, 2023 pm 03:49 PM

1 つの ASCII 文字が 1 バイトを占めます。 ASCII コード文字は、コンピュータでは 7 ビットまたは 8 ビットのバイナリ エンコーディングで表され、1 バイトで格納されます。つまり、1 つの ASCII コードが 1 バイトを占めます。 ASCII コードは、標準 ASCII コードと拡張 ASCII コードに分けることができます。標準 ASCII コードは、基本 ASCII コードとも呼ばれます。7 ビットの 2 進数 (残り 1 桁は 0) を使用して、すべての大文字と小文字を表します。 0 ~ 9 の数字。アメリカ英語で使用される句読点および特殊な制御文字。

utf8 でエンコードされた中国語の文字は何バイトを占めますか? utf8 でエンコードされた中国語の文字は何バイトを占めますか? Feb 21, 2023 am 11:40 AM

UTF8 でエンコードされた中国語文字は 3 バイトを占めます。 UTF-8 エンコードでは、1 つの中国語文字は 3 バイトに相当し、1 つの中国語の句読点は 3 バイトを占めますが、Unicode エンコードでは、1 つの中国語文字 (繁体字中国語を含む) は 2 バイトに相当します。 UTF-8 は各文字のエンコードに 1 ~ 4 バイトを使用します。1 つの US-ASCIl 文字のエンコードには 1 バイトのみが必要です。ラテン語、ギリシャ語、キリル文字、アルメニア語、および発音区別符号付きのヘブライ語。アラビア語、シリア語およびその他の文字は 2 バイトが必要です。エンコーディング。

ASCIIコードは何バイトを占めますか? ASCIIコードは何バイトを占めますか? Sep 07, 2023 pm 04:03 PM

ASCII コードは 1 バイトを占めます。ASCII コードは、文字を表すために使用されるコーディング標準です。7 ビットの 2 進数を使用して、文字、数字、句読点、特殊文字などを含む 128 個の異なる文字を表します。バイトはコンピュータの記憶装置の基本単位です。バイトは 8 つのバイナリ ビットで構成されます。各バイナリ ビットは 0 または 1 です。1 バイトは 256 の異なる値を表すことができるため、ASCII コードのすべての文字を表すことができます。

メディアの音量コントロールのポップアップを無効にする方法 [永続的] メディアの音量コントロールのポップアップを無効にする方法 [永続的] May 24, 2023 pm 10:50 PM

対応するショートカット キーを使用して音量レベルを微調整すると、メディア音量コントロールのポップアップが画面に表示されます。これは煩わしい場合があるので、メディアの音量コントロールのポップアップを永久に無効にするさまざまな方法を読んでください。メディアの音量コントロールのポップアップを無効にするにはどうすればよいですか? 1. Google Chrome のタスクバーにある Windows アイコンをクリックし、上部の検索バーに「chrome」と入力し、関連する検索結果を選択して Google Chrome を起動します。アドレス バーに次の内容を入力するかコピーして貼り付け、キーを押します。 「chrome://flags」と入力し、上部の検索ボックスにメディア キーを入力し、[ハードウェア メディア キーの処理] ドロップダウン リストで [無効] を選択します。次に、Google Chrome アプリを終了して、再起動します。グーグル

See all articles