java - 在 Java 中增量更改字符串中的数字

标签 java

我有一个在索引 4 和 18 处有数字的字符串。我需要将字符串打印到 Java 控制台,以便数字递增 1,直到达到数字 40。

字符串:

String a = "AAA_0_BBB_CCC(DDD_0_EEE)" ;

控制台中所需的输出:

AAA_1_BBB_CCC(DDD_1_EEE)
AAA_2_BBB_CCC(DDD_2_EEE)
AAA_3_BBB_CCC(DDD_3_EEE)
.
.
.
AAA_40_BBB_CCC(DDD_40_EEE)

我的程序(见下文)打印从 0 到 9 的数字。但我不知道如何用两位数(11 到 40)继续循环。我可以为每个索引 (4,5,19,20) 重写程序,但我想知道是否有更简单的方法来处理它。

我在索引 4 和 18 处更改一位数的程序:

public static void main(String[] args){
StringBuffer buf = new StringBuffer( a );
String a = "AAA_0_BBB_CCC(DDD_0_EEE)" ;
for (int i = 0; i< 10; i++){
//make i a character j
String k = Integer.toString(i);
char j = k.charAt(0);
//replace index position 4 and 18
buf.setCharAt( 4, j );
buf.setCharAt( 18, j );
String z = buf.toString( );
System.out.println(z);
}

最佳答案

String.format() 可以轻松满足您的需求

for (int i = 0; i<= 40; i++){
    String str = String.format("AAA_%d_BBB_CCC(DDD_%d_EEE)", i, i);
    System.out.println(str);
}

您甚至可以使用 argument index 稍微简化调用:

String.format("AAA_%1$d_BBB_CCC(DDD_%1$d_EEE)", i);

一般来说,每当您需要创建时,最好使用 String.format()(或 Andreas 提到的 System.out.printf())非字符串值中的字符串。查看Formatter格式字符串语法的文档。


还有一件事:我看到您在代码中使用了 StringBuffer。考虑使用速度稍快(并且不是线程安全的)的 StringBuilder。使用 StringBuilder,您需要实现的目标可能如下所示

String str = new StringBuilder().append("AAA_").append(i).append("_BBB_CCC(DDD_").append(i).append("_EEE)").toString();

或者你甚至可以使用简单的

String str = "AAA_" + i + "_BBB_CCC(DDD_" + i + "_EEE)";

Java 编译器足够聪明,可以插入 StringBuilder 自动连接更长的几个字符串。

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

相关文章:

c# - 数组内存分配——分页

java - @ControllerAdvice 与 ResourceHandler 冲突 : Spring 4

java - 用 Java 下载多个文件

Java接口(interface)方法

java - 重命名 hashmap 的键值而不是重新插入

Java Swing JComboBox 选择唯一可用的项目

Java,计算两个日期之间的天数

java - 如何扩展 Spring 容器以实现特定于部署?

java - H2 数据库 ALIAS_COLUMN_NAME=TRUE 似乎不起作用

java - If-Else 的 Else 语句有时不会被调用吗?