4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

string.charCodeAt(n) < 256 との遭遇

Last updated at Posted at 2018-02-08

string.charCodeAt(n) < 256 という条件文と遭遇し、前後の文脈から「半角英数文字か否かの判断をしているのだろう」と推測したものの、具体的に何をどう判定しているのか分からなかったので調べた。

.charCodeAt(n)メソッド

指定位置のUnicodeコードポイント(10進数)を返す
String.prototype.charCodeAt() - JavaScript | MDN

そもそもUnicodeとは

  • 文字コード規格のひとつ。
  • 文字コードは文字集合と符号化(エンコード)方式から成る。
    • Unicodeは文字集合にあたる。
    • Unicode用の符号化方式としてUTF-8などが存在する。
  • 多言語対応。文字種毎にブロックが分けられている。
  • コードポイントは「U+」 の後に十六進法で表す

Unicodeについて
文字コードの考え方から理解するUnicodeとUTF-8の違い

Unicodeコードポイント < 256 の意味

256未満つまり255=0xFF以下ということで、UnicodeコードポイントU+0000~U+00FFの範囲に相当。

上記の表を見ると、半角英数も含まれているが、それ以外の記号・制御文字・英語以外の言語の文字も含まれていることが分かる。

ブロックとしては0000~007Fが基本ラテン文字、0080~00FFがラテン1補助に相当。ラテン文字はこのほかに拡張A/Bブロックもあるので、< 256はざっくりラテン文字か否かを判断していることに…。ざっくり過ぎる…。

文字判定は正規表現かきっちり指定が分かりやすい

ゆるふわ範囲指定は今回のように意図がブレて混乱が生じるので、例えば英数のみなら正規表現[a-zA-Z0-9]でチェックする方が何をしているか分かりやすい。
もしくはUnicodeコードポイントでも0031〜0039,0041〜005A,0061〜007Aのようにきっちり範囲指定するか。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?