文字列処理メニュー(11〜15)

文字列処理メニュー【文字列から数値への変換・大文字から小文字への変換・大文字小文字の反転 ほか】

【文字列から数値への変換】コード

reader.on('close', () => {
   const S = lines[0];
   console.log(S - 813);
});
hogeちゃんの画像

数字 – 数値 = 数値。

【数値から文字列への変換】コード

reader.on('close', () => {
   const X = Number(lines[0]);  // 入力を数値化して X で受取
   const Y = Number(lines[1]);  //     〃    Y  〃
   const N = Number(lines[2]);  //     〃    N  〃
   console.log(String(X + Y)[N - 1]);  // 足し算してから 数値に変換→N文字目を出力
});
hogeちゃんの画像

入力を数値化して受取りXY を 足し算してから文字列に変換して [N – 1] で N 文字目を取得しました。

【大文字から小文字への変換】コード

reader.on('close', () => {
   const S = lines[0];
   console.log(S.toLowerCase());  // 小文字に変換
});
hogeちゃんの画像

小文字への変換はtoLoweCase()

【小文字から大文字への変換】コード

reader.on('close', () => {
   const S = lines[0];
   console.log(S.toUpperCase());  // 大文字に変換
});
hogeちゃんの画像
大文字への変換はtoUpperCase()

【大文字小文字の反転】コード 1/2

reader.on('close', () => {
   const S = lines[0].split('');
   const T = [];
   const a = 'a'.codePointAt();  // "a" の文字コード
   const A = 'A'.codePointAt();  // "A" の文字コード
   const ch = a - A;  // "a" の文字コード と "A" の文字コードの差
   S.forEach(s => {
      const c = s.codePointAt(0);  // cs の文字コード
      if (c >= a) {  // ca 以上なら…
         T.push(String.fromCodePoint(c - ch));  // 文字コードが c - ch の文字を T に保存
      } else {  // さもなくば…
         T.push(String.fromCodePoint(c + ch));  // 文字コードが c + ch の文字を T に保存
      }
   });
   console.log(T.join(''));
});
hogeちゃんの画像

″a″ の文字コード と ″A″ の文字コードの差 (change) を求めて S の各要素の文字コード c が ″a″ の文字コードより大きければ 文字コード (cchange)の値を T  に保存して 逆なら 文字コード (c + change)の値を T に保存。

【大文字小文字の反転】コード 2/2

reader.on('close', () => {
   const S = lines[0].split('');
   const low = /[a-z]/;  // low は 正規表現 "x"~"z" のいずれか1文字
   for (let i = 0; i < S.length; i++) {
      const s = S[i];
  // slow ("x"~"z"の1文字) に該当すれば大文字に変換,該当しなければ小文字に変換
      low.test(s) ? S[i] = s.toUpperCase() : S[i] = s.toLowerCase();
   }
   console.log(S.join(''));
});
hogeちゃんの画像

S の各要素が小文字かどうか調べるために 正規表現を使いました。

 

コメント