我读了一些在Ruby中这样做的代码:
puts ('A'..'Z').to_a.join(',')
输出:
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
有没有什么Javascript可以做到的呢?如果没有,是否有Node模块允许类似的东西?
Javascript
Javascript本身没有该功能。您可以在下面找到一些如何解决的示例:
正常功能,基本平面中的任何字符(不检查代理对)
function range(start,stop) { var result=[]; for (var idx=start.charCodeAt(0),end=stop.charCodeAt(0); idx <=end; ++idx){ result.push(String.fromCharCode(idx)); } return result; }; range('A','Z').join();
与上面相同,但是作为添加到数组原型的函数,因此可用于所有数组:
Array.prototype.add_range = function(start,stop) { for (var idx=start.charCodeAt(0),end=stop.charCodeAt(0); idx <=end; ++idx){ this.push(String.fromCharCode(idx)); } return this; }; [].add_range('A','Z').join();
预选字符的范围。比上面的函数要快,并且可以alphanum_range('A','z')用来表示AZ和az:
alphanum_range('A','z')
var alphanum_range = (function() { var data = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'.split(''); return function (start,stop) { start = data.indexOf(start); stop = data.indexOf(stop); return (!~start || !~stop) ? null : data.slice(start,stop+1); }; })(); alphanum_range('A','Z').join();
或ascii范围内的任何字符。通过使用缓存的阵列,它比每次构建阵列的功能都快。
var ascii_range = (function() { var data = []; while (data.length < 128) data.push(String.fromCharCode(data.length)); return function (start,stop) { start = start.charCodeAt(0); stop = stop.charCodeAt(0); return (start < 0 || start > 127 || stop < 0 || stop > 127) ? null : data.slice(start,stop+1); }; })(); ascii_range('A','Z').join();