毎日温泉に入りたい♨︎

見た物や買った物、投資についてを書いてますヽ(* ॑꒳ ॑* )ノダァーッ!!

幅なし空白文字を削除する@javascript

先日とある製品を利用した時、クライアントサイドの日本語文字列の文字数が想定値より多く取得される現象に遭遇

文字数カウントしてるだけなのに何だ?Σ(・∀・;)と思いChromeの開発者モードで確認したところ「​」が挿入されている!!

幅なしの空白文字か〜、しかしなんで特殊文字対策してないねんw*1


とか内心思いましたが冷静にjavascriptでトリムする方法を検討、取りあえず下記で行けるという結論に達しました。
サーバーサイドでサニタイジングする方が良いけどカスタマイズできないため

 var str_result = "対象文字列".replace(/[\u200B-\u200D\uFEFF]/g, '');

上で行けるか実験(`・ω・´)

 //ターゲット文字列
 var tar_char = "お​も​て​な​し";
 //そのまま実行
 console.log(tar_char.length); //9 お​も​て​な​し
 //空白をトリムして実行
 var str_result  = tar_char.replace(/[\u200B-\u200D\uFEFF]っg, '');
 console.log(tar_char.length); //5 おもてなし



正直ただのlength打って適切な値が取得出来ないのは焦る(笑)

物によるでしょうけど製品であればこのくらいは標準で対応して頂きたい物です

stackoverflow.com

*1:特別な文字 8000〜8999−特殊文字リファレンス