如何将一个字符串插入另一个字符串的中间? [复制]
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
代表“示例”,所以我将其解释为这两个字符串只是示例以上是关于如何将一个字符串插入另一个字符串的中间? [复制]的主要内容,如果未能解决你的问题,请参考以下文章