簡體   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