私は英語と中国語の両方でSMSメッセージを入力するテキストフィールドを持っています。私が検索したように、1つのSMSは1120ビットしか持てません。それぞれの英語文字は7ビットなので、1120/7 = 160文字、中国語の各文字は16ビットなので、1120/16 = 70文字になります。私はjqueryを使って、書かれた単語とテキストフィールドの下に残っている単語を表示する必要があります。どうすればいい?jquery 7ビットと16ビットのSMS文字の計算
答えて
に$maxVal
の値を変更することができます。だから、単一のバイトは、特定のrange.Sameの事で、次の私はjsファイルを作成している
function getByteLength(normal_val) {
// Force string type
normal_val = String(normal_val);
var byteLen = 0;
for (var i = 0; i < normal_val.length; i++) {
var c = normal_val.charCodeAt(i);
byteLen += c < (1 << 7) ? 1 :
c < (1 << 11) ? 2 :
c < (1 << 16) ? 3 :
c < (1 << 21) ? 4 :
c < (1 << 26) ? 5 :
c < (1 << 31) ? 6 : Number.NaN;
}
return parseInt(byteLen)*8;
}
メモリに基づいて、文字列のサイズを計算します次の関数を作成しました。この上の他のcharacters.Basedについても同様ですあなたのために働くバイブル。 http://jsfiddle.net/paraselixir/d83oaa3v/6/
thx paraS elixiR私はそれを通過します。 – Mikethetechy
なぜ1文字1ビットを数えているのですか?英語のキャラクターが8ビットではないと思われますか? – Mikethetechy
ああ申し訳ありませんが、私は8で戻り値を掛けたので、バイトでメモリを数えています。 jsfiddleも更新しました。 –
以下のスニペットをご覧ください。これは、合計文字数とメッセージの総数をカウントします。
あなたは文字がそうでシングルバイト、ダブルバイト、トリプルバイトとすることができ70分の160
$(document).ready(function() {
var $remaining = $('#charNum'),
$messages = $remaining.prev();
$maxVal = 160;
$('.word-counter').keyup(function(){
var chars = this.value.length,
messages = Math.ceil(chars/$maxVal),
remaining = messages * $maxVal - (chars % (messages * $maxVal) || messages * $maxVal);
$remaining.text(remaining + ' characters remaining');
$messages.text(messages + ' message(s)/');
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea name="" id="SMSMessage" cols="30" rows="2" class="form-ctrl word-counter foo-value"></textarea>
<span class="error-message word-counter">0 message(s)/</span><span id="charNum" class="error-message">160 characters remaining</span>
thx ajeが返信しますが、私も中国語の文字を検出する必要があります – Mikethetechy
あり、我々はこの問題のために使用することができますパッケージ、チェックアウトは次のとおりです。https://github.com/danxexe/sms-counter
- 1. プレーンテキストへの非文字列バイナリコード16ビット
- 2. 16ビットCPU、16ビットOSの仮想化
- 3. Pythonと16ビットPGM
- 4. ビット単位のモジュラス計算
- 5. ナンシーと16ビットのPGM
- 6. 8ビットから16ビットへの変換
- 7. オンラインCRC計算機を使用してCRC 16ビット
- 8. 32ビット16進数の最初の16ビット
- 9. ffmpeg FLAC 24ビット96khzから16ビット48khz
- 10. アセンブリのx86上の文字列を分割する16ビット
- 11. 16ビットobjファイルVC++
- 12. 16進ビット操作
- 13. 8ビット文字列を16ワードブロックのシーケンスに変換する
- 14. Cプリプロセッサでの8ビットCRCの計算?
- 15. 16ビットの回転ハッシュ
- 16. ビット数のカウント。 16ビットアセンブリパリティプログラム
- 17. opencv QVectorのMat 16ビット
- 18. AVX2での256ビットCRC計算
- 19. Swiftの2桁の16進数文字列のビットごとのXOR 3
- 20. ビット演算&Iと
- 21. ビット演算とビットシフト演算
- 22. 負の数のAndroid 8ビットから16ビットへの表現
- 23. x86アセンブリの乗算命令と除算命令のオペランド、16ビット以上
- 24. 16ビットを8ビットの2つの部分に分割する
- 25. 16ビットのベクトルに8ビットのベクトルを配置する
- 26. バイナリファイルを異なる16進数の "型"(8ビット、16ビット、32ビット、...)に読み込む
- 27. 16ビット符号付きワードのみの演算
- 28. 32ビット32倍の32ビット32ビット乗算
- 29. PCM 16ビット録音バイトとショートと
- 30. シフトと加算を使用する64ビット整数のモジュロ7
ので、1つのメッセージには中国語や英語、右のいずれかのテキストが含まれていますか? –
@paraS elixiRはい、いずれかの言語の入力を許可します。 – Mikethetechy