2001Yのプロフォール画像

2001Y@Y20010920T

「コメントアウトを文字数に数えない字数カウンターを作ってみた」のアイキャッチ画像

文字数指定ありの文章を作らなくてはいけない機会が多くありますが、そのときによく思うのことがありました。

選択範囲の文字数はわかることが多いですが、毎回引き算をするのも面倒くさいし、複数箇所を消すか残すか検討したいもの。

なので、コメントアウトした行はカウントされない字数カウンターを作ってました。

コメントアウトを文字数に数えない字数カウンター

コメントアウトを除いた:0
コメントアウトと空白を除いた:0

文字数:0 空白抜き:0 カーソル位置:0 選択範囲:0

主な仕様

対応しているコメントアウトには//のみです。/* */などは機能しません。

コード

改行ごとに区切って配列化して、文の始めが//のものを除外して文字数を算出しています。

function count(e) {
  let out = 0,out2 = 0,
      split = e.split('\n'); //改行ごとに区切って配列化
  
  for (let i = 0; i < split.length; i++) {
    //IF:行始めが"//"ではない時
    if (!split[i].startsWith(&#039;//&#039;)){
      out = out + split[i].length; //コメントアウトを含まない場合
      out2 = out2 + split[i].trim().length; //空白とコメントアウトを含まない場合
    }
  }
  
  //出力
  counter.innerText = out; //コメントアウトを含まない文字数
  counternospace.innerText = out2; //空白とコメントアウトを含まない文字数
  
  let e2 = e.replace(/\r?\n/g,""); //デフォルトで改行は1文字に数えないように
  normal.innerText = e2.length; //デフォルト
  nospace.innerText = e2.trim().length; //空白を含まない文字数
  selectionStart.innerText = editor.selectionStart; //カーソル位置までの文字数
  select.innerText = String(document.getSelection()).length; //選択範囲の文字数
}

もっと前から作っとけばよかった...。

あとで⌘ + /で行始めに//を加えるようにしたい。