miyupaca log

2020-07-18 学習記録

2020/07/18

やったこと

  • JavaScript30 17 - Sort Without Articles
  • Linux標準教科書 第6章 viエディタ

JavaScript30 17 - Sort Without Articles

冠詞を入れずに文字列をアルファベット順に並べた文字列のリストを出力する。 0718.png replaceメソッドを使ってa,the,anを文字列から取り除く関数を作成。

// 冠詞を取り除く
function strip(bandName) {
  return bandName.replace(/^(a |the |an )/i, '').trim();
}

ポイントはAnywhereなどの単語の頭を間違えて削除しないように半角スペースまで入れること。
正規表現がまだパッと書けない。今回使った表現は以下。

  • ^ ・・・文字列の先頭
  • | ・・・orみたいな感じ
  • i ・・・大文字と小文字の違いを無視する

あとは、配列に格納されている文字列をこの関数を使うことで冠詞を取り除いた状態でsortメソッドで並び替え。

const sortedBands = bands.sort((a, b) 
=> strip(a) > strip(b) ? 1 : -1);

最後にli要素として HTMLに出力した。

document.querySelector('#bands').innerHTML =
sortedBands
  .map(band => `<li>${band}</li>`)
  .join('');

join('')を使うことで配列要素のままの文字列を連結したli要素として出力できた。

Linux標準教科書 第6章 viエディタ

viの操作に慣れるために早速教材で学習することに。無料ありがたい。
Linux標準教科書 ダウンロード LinuCレベル1対応 | Linux技術者認定試験 リナック | LPI-Japan

既に教科書にコマンドがコンパクトにまとまっているが、復習のためにブログに書いていってみる。

基本操作

  • ファイルを開く

    vi [ファイル名]
  • ファイルを閉じる

    :q 終了
    :w 保存
    :wq 保存して終了
    :q! 強制終了

インサートモードとコマンドモード

  • コマンドモード
    コマンドを入力する。viエディタ起動時はコマンドモード。
    インサートモード時はEscキーでコマンドモードに切り替える。
  • インサートモード
    文字列を打ち込む時に使う。iやaで切り替える。
    iはカーソルの位置に入力(insert)、aはカーソル位置の後ろに入力(append)。
    行の先頭の時はI、行の最後の時はA

    i カーソルの位置に入力(insert)
    a はカーソル位置の後ろに入力(append)
    I 行の先頭に入力
    A 行の最後に入力

以下コマンドモード時の操作

  • カーソル移動

    h 左に移動
    l 右に移動
    j 下に移動
    k 上に移動
    0 カレント行先頭に移動
    $ カレント行の行末に移動
    Ctrl+f 次のページへの移動
    Ctrl+b 前のページへの移動
    :行番号 指定した行に移動(:10で10行目)

編集操作

x 1文字削除
dd 1行削除
yy 1行コピー
nyy n行コピー
p カーソルの次にペースト
P カーソルの前にペースト
u カットやペーストを一回取り消し(undo)

置換と検索

/文字列 文字列を検索
n (検索中) 次の文字列を再検索、押した回数だけ再検索
N (検索中) 1つ前の文字列を再検索、押した回数だけ再検索
ns/old/new n行目の最初のoldをnewに置換する
ns/old/new/g n行目の全てのoldをnewに置換する
%s/old/new/g ファイル全体ののoldをnewに置換する
%s/old/new/gc 1つずつ置換のたびに確認が入る

気づきなど

教科書のviの章を一通りやるだけでもviの操作分からないアレルギーはだいぶなくなった気がする。後は実践して慣れるのみ。Linux標準教科書、さくっと読み進められそうだったのでどんどん進めようと思った。


miyupacaの学習記録ブログです。