如何将一个字符串插入另一个字符串的中间? [复制]

Posted

技术标签:

【中文标题】如何将一个字符串插入另一个字符串的中间? [复制]【英文标题】:How to insert one string into the middle of another string? [duplicate] 【发布时间】:2013-03-04 18:58:03 【问题描述】:

我试图将一个字符串插入另一个字符串的中间,例如:

String One = "MonkeyPony";
String Two = "Monkey";

我如何将字符串 2 放入字符串 1 中,这样它就会读到像 MonkeMonkeyyPony 这样的东西?

我要做的是多次将“Monkey”插入“MonkeyPony”的中间,所以第一次它会显示“MonkeMonkeyyPony”,第二次会显示“MonkeMonkeyyPony”等.

【问题讨论】:

@TylerH 到那时问这个问题,SO 中的规则并没有那么严格,发帖人在 6 年后将其标记为重复是不公平的。 @User2012384 这与“公平”无关; SO 的目的是提供一组对将来遇到它们的人有用的问题和答案。清理旧的无用问题是其中的一部分,并且完全有效。问题不会因为太旧而通过。 @User2012384 将问题标记为重复对现有答案没有影响。 @User2012384 你错了。当问这个问题时,重复的规则和现在一样。这个问题在被问到的那天是重复的;如果您点击,您会看到两年前提出的目标问题。 related meta discussion 【参考方案1】:

您必须将第一个字符串的两个子字符串连接到第二个字符串的末尾。

// put the marble in the bag
public static String insert(String bag, String marble, int index) 
    String bagBegin = bag.substring(0,index);
    String bagEnd = bag.substring(index);
    return bagBegin + marble + bagEnd;

【讨论】:

是否有办法循环这个,而不是仅仅将它插入中间,而是 MonkeMonMonMonMonkeykeykeyyPony ? 效率会低一些,但是你可以把这个方法链接几次。【参考方案2】:

您可以使用StringBuilder.insert​(int offset, String str) 来实现此目的。

StringBuilder builder = new StringBuilder("MonkeyPony");
for(/* As often as necessary */) 
    int halfway = (int) (builder.length() / 2);
    builder.insert(halfway, "Monkey");
 return builder.toString();

【讨论】:

【参考方案3】:

您不需要使用 StringBuilder 或任何其他复杂的方法来执行此操作。这是实现这一目标的最简单方法。在这个方法中,我只是使用了简单的 String 方法。

import java.util.Scanner;

class Insert

    public static void main(String[] args)
    
        System.out.println("Enter First String");
        Scanner scan = new Scanner (System.in);
        String str = scan.next();
        System.out.println("Enter Second String");
        Scanner scan2 = new Scanner (System.in);
        String str1 = scan2.next();
        int i = str.length();
        int j = i/2;

        if (i % 2 == 0)                    //Condition For Even
        
            System.out.println(str.substring(0,j) + str1 + str.substring(j-1,(str.length() - 1)));
        
        else 
        
            System.out.println(str.substring(0,j) + str1 + str.substring(j,(str.length() - 0)));
        
    

【讨论】:

这是最简单的方法吗?前几年的其他答案分别是 1 行和 5 行。这一行是 25 行。 因为它们有调试语句,而且它很简单,因为它很容易逐行理解它在做什么。更短的代码!= 总是最简单的方法。 @TylerH 没有评论这个是否更简单,其他答案显然更有可能更短,因为它们不是完整的程序文件;一个是方法定义,另一个是语句。它们不包括这个答案所包含的样板代码(或调试语句,正如 Kaito 指出的那样) @Abdul 是的,但他对围绕这两个字符串的代码的外观做出了假设,我认为这会构成噪音。当两个字符串都是已知常量时,为什么还要涉及扫描仪? @UniqIdentifierAssignedAtBirth 这两个字符串是已知常量吗?我读到I am trying to stick one string into the middle of another string, ex: 中的ex 代表“示例”,所以我将其解释为这两个字符串只是示例

以上是关于如何将一个字符串插入另一个字符串的中间? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

vim 将一个文件中多行内容粘贴到另一个文件

如何将参数作为字符串连接,中间有空格? [复制]

有效地将切片插入另一个切片

如何从一个表列中获取值,将它们与字符串连接并将它们插入另一个表中?

c语言中如何将一字符串插入另一个字符串中?

php如何将逗号分隔的多个json格式的字符串作为一个值插入到mysql表中? [复制]