0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

アルファベット探し .charCodeAt()・UTF

Posted at

今回は paiza の「アルファベット探し」に 挑戦!

JavaScirptでは、比較を連鎖できないことを忘れてた(´;ω;`)


問題概要


入力:

  • 1行目 → 英大文字 X
  • 2行目 → 英大文字 Y
  • 3行目 → 英大文字 C

求めること:

  • X から Y までのアルファベット範囲内に C が含まれていれば "true"
  • そうでなければ "false"
  • ただし X > Y(逆順) の場合は必ず "false"

出力:

  • true または false



入力例:

A
D
C

出力例:

true






❌ NG例:

const rl = require('readline').createInterface({ input:process.stdin });

const lines = [];

rl.on('line', (input) => lines.push(input));


rl.on('close', () => {
    const X = lines[0].charCodeAt();
    const Y = lines[1].charCodeAt();
    const C = lines[2].charCodeAt();
    
    
    console.log(X > Y ? false : X <= C <= Y); // ❌
});

❌ 問題点:X <= C <= Y
Pythonみたいに連鎖して比較できない。






✅ OK例:

const rl = require('readline').createInterface({ input:process.stdin });

const lines = [];

rl.on('line', (input) => lines.push(input));

rl.on('close', () => {
    // 入力を文字コード(数値)に変換
    const X = lines[0].charCodeAt();
    const Y = lines[1].charCodeAt();
    const C = lines[2].charCodeAt();
    
    // XがYより後ならfalse
    // そうでなければ C が [X, Y] の範囲にあるか判定
    console.log(X > Y ? false : X <= C && C <= Y);
});
  • .charCodeAt() で文字を数値に変換。

  • X > Y の場合は範囲が逆なので即 false

  • 範囲チェックは X <= C && C <= Y

  • console.log() の結果は “true” / “false” が自動で出力される。








🔍 charCodeAt()


charCodeAt() メソッドは、指定された位置にある UTF-16 コード単位を表す 0 から 65535 までの整数を返す。



◯ 基本の使い方

const str = "ABC";
console.log(str.charCodeAt(0)); // 65
console.log(str.charCodeAt(1)); // 66
console.log(str.charCodeAt(2)); // 67

👉 “A” の文字コードは 65、”B” は 66、”C” は 67。




◯ 書式

string.charCodeAt(index)
  • index: 文字列内の位置(0始まり)。
  • 戻り値: その位置の文字の Unicode コードポイント(0〜65535 の整数)。

  • 範囲外を指定した場合は NaN を返す。
"ABC".charCodeAt(10); // NaN




◯ 用途例:アルファベットの範囲判定

const c = "F";
const code = c.charCodeAt(0);

// 'A'〜'Z' の判定
if (65 <= code && code <= 90) {
    console.log("大文字アルファベットです");
}




🔍 UTF

UTFとは「Unicodeをバイト列で表現する方法(エンコーディング方式)」のこと。


UTF-8とUTF-16はどちらもUnicodeの文字を表現するためのエンコーディング方式だが、それぞれ特徴が異なる。

→ 一般的には、ウェブやモバイルアプリケーションではUTF-8が、システムやプラットフォームに依存する場合にはUTF-16が使われることが多い。






🗒️ まとめ


  • charCodeAt()

    • 文字を 数値 に変換できる
    • "A" → 65, "B" → 66, "C" → 67
    • アルファベットの順序比較が可能になる

  • 範囲チェックの書き方

    • Python のように X <= C <= Y は書けない
    • JavaScript では X <= C && C <= Y と分ける必要がある

  • 処理の流れ

    • X, Y, C を読み取る
    • charCodeAt() で数値に変換
    • X > Y なら即 false
    • そうでなければ X <= C && C <= Y を判定
    • 結果を true / false 出力

  • ポイント

    • JS の比較演算は連鎖できない
    • console.log() は自動的に "true" / "false" を文字列出力してくれる




僕の失敗談(´;ω;`)と解決法🐈

0
0
1

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?