我有一个在索引 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/