JSFIDDLE と SyntaxHighlighter

JSFIDDLE を26列以上でもちゃんと列番号を表示させようと思った

var letter = String.fromCharCode("A".charCodeAt(0)+j-1);

<pre style="padding-left: 30px;">var letter = makeColName(j);</pre>

に変えた後が結構面倒だった。

function makeColName(col) {
    if(col-- <=0)    return "";
    var digit = "Z".charCodeAt(0) - "A".charCodeAt(0) + 1;
    return makeColName(Math.floor(col/(digit))) + String.fromCharCode("A".charCodeAt(0)+(col % digit));
}

ストレートに表記文字を ”ABCDEFGHIJKLMNOPQRSTUVWXYZ” と並べて

function makeColName(col) {
  if(col-- <=0)    return "";
  if(typeof this.COLCHARS === 'undefined') {
    this.COLCHARS ="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; // いろんな文字で遊べる
    this.DIGIT = this.COLCHARS.length;
  }
  return makeColName(Math.floor(col/(this.DIGIT))) + this.COLCHARS.charAt(col % this.DIGIT);
}

すれば「あいうえお」でも「壱弐参零」もあり?
A1のAの部分は【基数が1の26進数表記】なので、
単純に剰余を求めると、0が出てきてしまうから、
まず列番号の基数を0に変え、各桁ごとにAの部分を作成して、次の桁の処理に移る。
だから

function makeColName(col) {
    var rc="";
    while(true) {
    if(col-- ==0) return rc;
    var digit = "Z".charCodeAt(0) - "A".charCodeAt(0) + 1;
    rc = String.fromCharCode("A".charCodeAt(0)+(col % digit)) + rc;
    col = Math.floor(col/(digit));
    }
}

でもいいはず。
見づらいのでSyntaxHighlighter Evolvedを入れようと思ったら、結構量もあるし、ヘッダーのPHPソースも盛らないといけないので、プラグインを入れてみた。
行の色が交互に変わらないので
wp-content / plugins / syntaxhighlighter3 / ${設定で選択したテーマ名}.css を

.syntaxhighlighter .line.alt1 {
    background-color: #33FFFF !important;
}

と変えてみた。
参考
makeColName(1) -> “A”
makeColName(2)-> “B”
makeColName(26) -> “Z”
makeColName(27) -> “AA”
今更、EXCELのワークシートのサイズが1,048,576行×16,384列まで増えていた(Excel2007以降のxlsxファイル)のに気が付いた。




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA