通过JS将列数字索引转换为字母

前端界面类似EXCEL,需要写JS代码将获得的列索引转换为字母,例如:1转换为A,2转换为B...

1、有个简单的办法就是创建多个Array,存储数字和字母的关系,然后根据列的数字索引分区段遍历Array,找到数字对应的字母。这个方法是最简单和高效的。

2、另外一个方法就是受了JAVA编码的启发,我没搜到JS码阿(我写了以后大家就能搜到了),然后试着把JAVA代码给翻译了一下,竟然成功了,汗一个,下附JAVA码和JS码

JavaScript: 
/**
	 * 列数字转字母. 例如: 1\2\3\4 转换为 A\B\C\D
	 * 
	 * @param number
	 *            列索引,从1开始
	 * @return
	 */
	function numToColNo(number) {
		var result = "";
		var INT_26 = 26;
		var INT_64 = 64;
		
		if (number <= INT_26) {
			result = result + String.fromCharCode(number + INT_64);
		} else {
			do {
				var value = number % INT_26;
				if (value == 0) {
					result = result + 'Z';
					number = number / INT_26 - 1;
				} else {
					result = result + String.fromCharCode(value + INT_64);
					number /= INT_26;
				}
			} while (number > INT_26);
			result = result + String.fromCharCode(number + INT_64);
		}

		var reverse = new StringBuffer();
		for (var i = result.length - 1; i >= 0; --i) {
			reverse.append(result.charAt(i));
		}
		return reverse.toString();
	}



Java:
/**
	 * 列数字转字母.
	 * 例如: 1\2\3\4 转换为 A\B\C\D
	 * @param number 列索引,从1开始
	 * @return
	 */
	public String numToColNo(int number) {
		String result = "";
		final int INT_26 = 26;
		final int INT_64 = 64;
		
		if (number <= INT_26) {
			result = result + (char) (number + INT_64);
		} else {
			do {
				int value = number % INT_26;
				if (value == 0) {
					result = result + 'Z';
					number = number / INT_26 - 1;
				} else {
					result = result + (char) (value + INT_64);
					number /= INT_26;
				}
			} while (number > INT_26);
			result = result + (char) (number + INT_64);
		}

		StringBuffer reverse = new StringBuffer();
		for (int i = result.length() - 1; i >= 0; --i) {
			reverse.append(result.charAt(i));
		}
		return reverse.toString();
	}

猜你喜欢

转载自suliran.iteye.com/blog/2293003