[英]I am trying to insert a string character to another string. How can I achieve it in java?
这是我正在处理的代码。 我不知道我要去哪里错了。
package mcdcpairwise;
import java.io.*;
import java.util.*;
public class Permutation
{
public static void main(String[] args)
{
String a="000";
String b="|&";
for (int i=0; i < a.length(); i++){
if (i % 2 != 0){
a = a.substring(0,i-1) + b.substring(0,i-1). + a.substring(i, a.length()) + b.substring(i, b.length());
System.out.println(a);
}
}
}
}
我面临的错误是:
线程“主”中的异常java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:java.lang.String.substring(String.java:1967)处为-2,mcdcpairwise.Permutation.main(Permutation.java:13)
输出应为:
0 | 0&0
正确的代码应该是a.substring(0,i)
。
从您的问题中还不清楚您处理该规则的确切“规则”是什么。 但是,您的输出似乎只是在源a
每个字符之间插入a
字符串。
代替使用子字符串,创建一个单独的StringBuilder
可以向其中添加各个字符。 下面的代码产生您想要的输出:
String string = "000";
StringBuilder output = new StringBuilder();
for (int i = 0; i < string.length(); i++) {
// Get current character in the string
char c = string.charAt(i);
// Add the current character to the output
output.append(c);
// If more characters exist, add the pipe
if (i != string.length() - 1) {
output.append("|");
}
}
System.out.println(output.toString());
您可以使用String.toCharArray
从String
获取char[]
。 这样,我们可以使用索引更轻松地迭代两个String
。
String a="000";
String b="|&";
char[] arrayA = a.toCharArray();
char[] arrayB = b.toCharArray();
然后,我们要做的就是合并两个数组(来自String
),从两个数组中取一个字符。 添加两个条件(每个数组一个)以防止任何ArrayIndexOutOfBOundsException,我们可以确保我们将合并两个数组。
StringBuilder sb = new StringBuilder();
//Add a char from both array (until we reach on of the limit)
int i = 0;
while( i < arrayA.length && i < arrayB.length){
sb.append(arrayA[i]).append(arrayB[i]);
++i;
}
然后,我们只需要在两个数组上使用for
循环添加其余字符。 因为至少一个先前条件( i < arrayA.length && i < arrayB.length
)已经为false
所以将仅触发(或不触发)这些循环中的一个。
//Add the rest of `a` if any
for(int j = i; j < arrayA.length; ++j){
sb.append(arrayA[j]);
}
//Add the rest of `b` if any
for(int j = i; j < arrayB.length; ++j){
sb.append(arrayB[j]);
}
System.out.println(sb.toString());
0 | 0&0
这是一种解决方案:
System.out.println((a + b).replaceAll("(?<=.)(?=.{" + (a.length() - 1) + "}(.))|.(?=.{0," + (b.length() - 1) + "}$)", "$1"));
这适用于所有非空白起始字符串的组合。
观看现场演示 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.