加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

如何在HTML中将基数为10的数字转换为字母顺序列表

发布时间:2020-12-14 18:31:57 所属栏目:资源 来源:网络整理
导读:我想将整数转换为字母等价,如 HTML中的有序列表. ol type="a" 我试图将基数为10的数字转换为带有-z数字的基数26. 但那不是我想要的. IN WANT GET -----------------------1 = a = a2 = b = b3 = c = c4 = d = d5 = e = e6 = f = f7 = g = g8 = h = h9 = i =
我想将整数转换为字母等价,如 HTML中的有序列表.
<ol type="a">

我试图将基数为10的数字转换为带有-z数字的基数26.

但那不是我想要的.

IN     WANT        GET      
-----------------------
1   =>  a       <=  a
2   =>  b       <=  b
3   =>  c       <=  c
4   =>  d       <=  d
5   =>  e       <=  e
6   =>  f       <=  f
7   =>  g       <=  g
8   =>  h       <=  h
9   =>  i       <=  i
10  =>  j       <=  j
11  =>  k       <=  k
12  =>  l       <=  l
13  =>  m       <=  m
14  =>  n       <=  n
15  =>  o       <=  o
16  =>  p       <=  p
17  =>  q       <=  q
18  =>  r       <=  r
19  =>  s       <=  s
20  =>  t       <=  t
21  =>  u       <=  u
22  =>  v       <=  v
23  =>  w       <=  w
24  =>  x       <=  x
25  =>  y       <=  y
26  =>  z       <=  az
27  =>  aa      <=  aa
28  =>  ab      <=  ab
29  =>  ac      <=  ac
private final static char[] digits = {
'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'
};

private static String numberToAlphaNumeric(long i,int radix) {

    char[] buf = new char[65];
    int charPos = 64;
    boolean negative = (i < 0);
    if (!negative) {
        i = -i;
    }
    while (i <= -radix) {
        buf[charPos--] = digits[(int)(-(i % radix))];
        i = i / radix;
    }
    buf[charPos] = digits[(int)(-i)];
    if (negative) { 
        buf[--charPos] = '-';
    }
    return new String(buf,charPos,(65 - charPos));
}

public static String numberToAlphaNumeric(long number) {
    ArrayList<String> list = new ArrayList<String>();
    for( int j = 0; list.size() != number; j++ ) {
        String alpha = numberToAlphaNumeric( j,digits.length );
        if(!alpha.contains( "0" )) {
            list.add( alpha );
        }
    }
    return list.get( list.size()-1 );
}

我的第二个想法:

如果我将新的前导符号扩展为数字并将我的数字转换为基数为27的数字,
我在每次携带中都有新的符号,这是错误的,我可以过滤掉它们.

这是非常低效和丑陋的,但我没有更多的想法.常见的方法是什么?

解决方法

这是基本算法.如果您需要更高效,请使用StringBuffer:
public static String getAlpha(int num) {

    String result = "";
    while (num > 0) {
      num--; // 1 => a,not 0 => a
      int remainder = num % 26;
      char digit = (char) (remainder + 97);
      result = digit + result;
      num = (num - remainder) / 26;
    }

    return result;
  }

另一种方法是转换为base 26,然后为你得到的字符串中的每个字符添加97.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读