java - Java中用字符增加数字

标签 java java-8

我在增加数量和字符组合时遇到问题。 我想要的是增加 001ZZZ

Example: 001, 002,..., 999, 00A,..., 00Z, 0AA,..., ZZZ

我的代码如下所示:

int numberA = 1000;
int numberB = 1024;
int numberC = 1025;

/*
 * Some formulae here
 */

System.out.println(numberA);
//Result: 00A
System.out.println(numberB);
//Result: 00Z
System.out.println(numberC);
//Result: 0A0

有没有什么公式可以解决这个问题?

最佳答案

也许以下内容将帮助您入门;-)

final Integer radix = 36; // that's 0-9 A-Z
final Double limit = Math.pow(radix.doubleValue(), 3.0 /* max number of 'chars' */);
Stream.iterate(0, i -> i+1)
        .map(i -> Integer.toString(i, radix))
        .map(s -> String.format("000%S", s)
                        .substring(s.length())) // leading 0, uppercase
        .limit(limit.longValue())
        .forEach(System.out::println);

或者简单地说:

String radix36 = Integer.toString(yourIntThatYouCanIncrement, 36);

当然,如果您需要 00# 格式(前导零和大写),您也需要应用该函数。 Holgers 评论已经包含它的一个简短变体,用于组合大写/前导零:

String formatted = String.format("000%S", radix36)
                         .substring(radix36.length());

关于java - Java中用字符增加数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53446748/

相关文章:

java - 为什么 Stream() 在 Scala 中不像在 Java 中那样工作?是否有其他 API 与 Stream() API 功能相同?

java - Jaxb 解码包含 & <> 符号的 xml

java - 尝试使用maven程序集插件时出现 "Assembly is incorrectly configured: null"

java - 如何使用 Mapstruct 从具有对象列表和另一个对象的模型实体映射到单个域实体

java - 静态方法和继承的返回类型中的泛型

filter - Java 8 - 我可以使用 lambda 来确保字段不在列表中吗?

java - 转换为流

具有 2 个过滤条件的 java 流

java - 名著证实java字符串是数组?

Java Mail 无法验证 openshift 服务器中的 smtp 设置