Алгоритм Javascript, чтобы получить имя столбца в стиле Excel

1

В основном то, что я хочу сделать, это создать список символов с таким форматом, как имя столбца excel.

например: a, b, c, d,....., z, aa, ab, ac,...., yz

в php вы можете просто выполнить цикл с помощью этого кода:

for($char = "A"; $char <= "Z"; $char++) 
{
    echo $char . "\n";
}

но когда я пробую это в javascript:

 var i3;
 var text3 = "";

for(i3 = "A"; i3 <= "Z"; i3++)
{
    text3 += i3 + ", ";
}

document.getElementById("pId").innerHTML = text3;

Это не работает для меня. Есть ли ошибки в моем коде? Или что PHP-логика не работает в JS? Если вы знаете, как это сделать, скажите мне, спасибо.

Теги:
excel
for-loop

3 ответа

3
Лучший ответ

В javacript оператор incrementor возвращает NaN при вызове строкового значения.

Вы можете использовать реализацию на основе кода ascii, например

var i3, i4;
var text3 = "";

for (i3 = 0; i3 < 26; i3++) {
  text3 += String.fromCharCode(97 + i3) + ", ";
}
for (i3 = 0; i3 < 26; i3++) {
  for (i4 = 0; i4 < 26; i4++) {
    text3 += String.fromCharCode(97 + i3) + String.fromCharCode(97 + i4) + ", ";
  }
}


document.getElementById("pId").innerHTML = text3;
<span id="pId"></span>
  • 0
    Он создает только: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, что я хочу: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t , u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ......., az, ba, bb, bc, ........, bz, ca, cb, .................., yz как имя столбца Excel.
  • 1
    @ wendy посмотри обновление
Показать ещё 2 комментария
0

Короткие красивые!

var nextChar = c=>c?String.fromCharCode(c.charCodeAt(0)+1):'A';
var nextCol = s=>s.replace(/([^Z]?)(Z*)$/, (_,a,z)=>nextChar(a) + z.replace(/Z/g,'A'));

//test:

nextCol(''); //A
nextCol('A'); //B
nextCol('Z'); //AA
nextCol('AA'); //AB
nextCol('XYZ'); //XZA
nextCol('ZZZZ'); //AAAAA

//output: A,B,C,...,ZZ
for(var i=0, s=''; i<702; i++){
    s = nextCol(s);
    console.log(s);
}

//output: A,B,C,...,ZZZZ
for(var i=0, s=''; i<475254; i++){
    s = nextCol(s);
    console.log(s);
}
0

Пожалуйста, попробуйте приведенный ниже код, чтобы сделать это с помощью javascript

var i3;
var text3 = "";
var c;

   for(i3 = 65; 90 >= i3; i3++)
{
    c = String.fromCharCode(i3);
    text3 += c + ", ";
}

document.getElementById("pId").innerHTML = text3;
  • 0
    Ваш ответ аналогичен ответу Аруна, он только создает список символов AZ, но не AA, AB, ..., AZ, BA, BB, ...., BZ, CA, ......., YZ

Ещё вопросы

Сообщество Overcoder
Наверх
Меню