繁体   English   中英

我试图将一个字符串字符插入另一个字符串。 如何在Java中实现?

[英]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.toCharArrayString获取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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM