文字列処理メニュー【文字列から数値への変換・大文字から小文字への変換・大文字小文字の反転 ほか】
【文字列から数値への変換】コード
reader.on('close', () => {
const S = lines[0];
console.log(S - 813);
});
数字 – 数値 = 数値。
【数値から文字列への変換】コード
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文字目を出力
});
入力を数値化して受取りX と Y を 足し算してから文字列に変換して [N – 1] で N 文字目を取得しました。
【大文字から小文字への変換】コード
reader.on('close', () => {
const S = lines[0];
console.log(S.toLowerCase()); // 小文字に変換
});
小文字への変換はtoLoweCase()
。
【小文字から大文字への変換】コード
reader.on('close', () => {
const S = lines[0];
console.log(S.toUpperCase()); // 大文字に変換
});
大文字への変換は
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); // c は s の文字コード
if (c >= a) { // c が a 以上なら…
T.push(String.fromCodePoint(c - ch)); // 文字コードが c - ch の文字を T に保存
} else { // さもなくば…
T.push(String.fromCodePoint(c + ch)); // 文字コードが c + ch の文字を T に保存
}
});
console.log(T.join(''));
});
″a″ の文字コード と ″A″ の文字コードの差 (change) を求めて S の各要素の文字コード c が ″a″ の文字コードより大きければ 文字コード (c – change)の値を 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];
// s が low ("x"~"z"の1文字) に該当すれば大文字に変換,該当しなければ小文字に変換
low.test(s) ? S[i] = s.toUpperCase() : S[i] = s.toLowerCase();
}
console.log(S.join(''));
});
S の各要素が小文字かどうか調べるために 正規表現を使いました。
コメント