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