JavaScriptにおきまして、
Shift_JISの文字列をバイト数でカウントするには
以下のコードで可能ですが、バイト数で文字列を分割する方法が不明です。
コード: 全て選択
String.prototype.bytes = function () {
var length = 0;
for (var i = 0; i < this.length; i++) {
var c = this.charCodeAt(i);
if ((c >= 0x0 && c < 0x81) || (c === 0xf8f0) || (c >= 0xff61 && c < 0xffa0) || (c >= 0xf8f1 && c < 0xf8f4)) {
length += 1;
} else {
length += 2;
}
}
return length;
};
substr/substring/splitメソッドが主ですが
これらは、文字数による分割ですので
バイト数での分割というメソッドが見当たりませんでした。
何をしたいのかと申しますと
バトルメッセージを指定の位置で改行して表示したいと考えており、
それを実現するためには、
1バイト文字と2バイト文字を加味した位置で改行コードを入れる必要があります。
(※メッセージログを取るプラグインとの兼ね合いで、ログの方は改行不要のため
このような邪道なやり方を試みております)
詳細を申し上げますと、
上記のコードを用い、
if(text.bytes() > 50){
とすることで、バイト数での分岐はできますものの
textに入った文字列を、変数「textA」と「textB」に分割したいと考えておりますが
バイト数で分割できないといった状況です。
jsにお詳しい方がいらっしゃいましたら
何とぞご教示いただけますと幸いです。
どうかよろしくお願いいたします。