文字列処理メニュー(16〜20)

文字列処理メニュー【文字列の検索・文字列の反転・回文判定・文字列の分割・日時データの変換その1】

【文字列の検索】コード

reader.on('close', () => {
   const S = lines[0];
   const T = lines[1];
   console.log(S.includes(T) ? 'YES' : 'NO');  // ST が含まれる→″YES″,含まれない→″NO″
});
hogeちゃんの画像

S.includes(T) の戻り値 は ST が 含まれていれば true 含まれていなければ falseでしたね。

【文字列の反転】コード

reader.on('close', () => {
   const S = lines[0];
   let T = '';  // T を空文字で初期化
   for (let i = S.length - 1; i >= 0; i--) {
      T += S[i];  // S を逆順で一文字ずつ読み取り T に追加
   }
   console.log(T);
   // const S2 = lines[0].split(''); // 入力を配列に変換受取り
   // console.log(S2.reverse().join('')); // reverse()で並べ替えてjoin('')で結合
});
hogeちゃんの画像

T  (最初は空文字) に S を逆順で一文字ずつ読み取った 文字をプラスしました。

下の2行は入力を配列化して逆順に並べ替えてから結合して出力するコード…。

【回文判定】コード

reader.on('close', () => {
   const S = lines[0];
   let T = '';  // T を空文字で初期化
   for (let i = S.length - 1; i >= 0; i--) {
      T += S[i];  // S を逆順で一文字ずつ読み取り T に追加
   }
   console.log(S === T ? 'YES' : 'NO');  // S === T が trun →″YES″,false→″NO″
});
hogeちゃんの画像

【17】と同じ手順で ST が一致すれば ″YES″。さもなくば ″NO″ を出力しています。

【文字列の分割】コード

reader.on('close', () => {
   const S = lines[0];
   const T = S.split(',');  // T (配列)の要素は S を ″,″ 区切りで分割した値
   T.forEach(t => {
      console.log(t);
   });
});
hogeちゃんの画像
S を ″,″ 区切りで分割した配列を T に保存して 各要素を出力しています。

【日時データの変換その1】コード

reader.on('close', () => {
   const S = lines[0];  // S = yyyy/MM/dd/hh:mm 
   const T = S.split('/');  // T = [yyyy, MM, dd, hh:mm] 
   T[3] = T[3].split(':');  // T = [yyyy, MM, dd, [hh, mm]] 
   T.flat().forEach(t => {  // T.flat() = [yyyy, MM, dd, hh, mm] 
      console.log(t);
   });
});
hogeちゃんの画像

S. を “/” 区切りの配列 (T) にしてから 4番目の値(T[3]) を ″:″ で区切った配列にしました。T は2次元配列になったので 出力時に T.flat() を実行して1次元の配列にしています。

コメント