如何在java中将两个String合并为一个String

时间:2017-05-24 18:45:09

标签: java

假设:

String s1="13579";
String s2="2468";

然后输出为123456789

这是我的代码:

public class JoinString {

    public static void main(String[] args) {

        String s1 = "13579"; 
        String s2 = "2468";
        for (int i = 0; i < s1.length(); i++) {
            for (int j = i; j < s2.length(); j++) {

                System.out.print(s1.charAt(i) + "" + s2.charAt(j));
                break;
            }
        }
    }
}

6 个答案:

答案 0 :(得分:3)

StringBuilder buf = new StringBuilder();
for (int i = 0; i < Math.max(s1.length(), s2.length()); i++) {
    if (i < s1.length()) {
        buf.append(s1.charAt(i));
    }
    if (i < s2.length()) {
        buf.append(s2.charAt(i));
    }
}
final String result = buf.toString();

你只需要一个循环。此外,您可以使用StringBuilder类来逐个字符地构建字符串。

答案 1 :(得分:3)

这个小技巧怎么样:

String s1 = "13579"; 
String s2 = "2468";

String s3 = (s1 + s2).codePoints() // stream of code points
    .sorted()
    // collect into StringBuilder
    .collect(StringBuilder::new, StringBuilder::appendCodePoint,  StringBuilder::append) 
    .toString();

System.out.println(s3); // 123456789 

答案 2 :(得分:2)

实现这一目标的一种简单方法是执行以下操作:

String s1 = "13579"; 
String s2 = "2468";
char[]result = (s1+s2).toCharArray();
Arrays.sort(result);
System.out.println(result);

<强>输出:

123456789

答案 3 :(得分:1)

你只需要像这样组合两个循环的逻辑(如果你想用这种方式构建一个字符串,就使用StringBuilder)。

    String s1 = "13579"; 
    String s2 = "2468";
    int length = Math.max(s1.length(), s2.length());
    for (int i = 0; i < length; i++) {
        if(i < s1.length())
          System.out.print(s1.charAt(i));

        if(i < s2.length())
          System.out.print(s2.charAt(i));
    }

答案 4 :(得分:0)

与@Roman Puchovskiy相似,这是一种不使用StringBuilder的方法。

    String s1 = "abcde";
    String s2 = "defgh";
    String combined = "";
    int length = s1.length() > s2.length() ? s1.length() : s2.length(); //Finds the longest length of the two, to ensure no chars go missing
    for(int i = 0 ; i < length ; i++) {
        if(i < s1.length()) { // Make sure there is a char in s1 where we're looking.
            combined += s1.charAt(i);
        }
        if(i < s2.length()) { // Same with s2.
            combined += s2.charAt(i);
        }
    }

combined成为组合字符串的位置。 ("adbecfdgeh")。

希望这有帮助!

答案 5 :(得分:0)

与合并排序中的合并方法类似。

如果将字符串转换为char数组,以便随机访问元素是恒定的时间,那么它也会更好。 因为charAt具有O(n)时间复杂度。

@AfterTest

}