在另一个字符串的开头插入字符串

时间:2009-09-25 06:53:36

标签: java string

如何在StringBuilder和String的开头插入用双引号括起来的字符串?

例如:

StringBuilder _sb = new StringBuilder("Sam");

我需要在“Sam”的开头插入字符串“Hello”,O / p是“Hello Sam”。

String _s = "Jam";

我需要在“Jam”的开头插入字符串“Hello”,O / p是“Hello Jam”。

如何实现这一目标?

6 个答案:

答案 0 :(得分:50)

第一种情况是使用insert()方法完成的:

_sb.insert(0, "Hello ");

后一种情况可以使用字符串上的重载+运算符完成。这在后台使用StringBuilder:

String s2 = "Hello " + _s;

答案 1 :(得分:11)

其他答案解释了如何在另一个StringStringBuilder(或StringBuffer)的开头插入字符串。

但是,严格地说,您不能将字符串插入另一个字符串的开头。 Java中的字符串是不可变的 1

当你写:

String s = "Jam";
s = "Hello " + s;

您实际上正在创建一个新的String对象,它是“Hello”和“Jam”的串联。实际上,您根本没有将字符插入到现有的String对象中。


1 - 技术上可以使用反射来打破String对象的抽象并改变它们......即使它们是不可变的按设计。但要做到这一点是非常糟糕的主意。除非您知道String对象是通过new String(...)显式创建的,否则它可以共享,或者它可以与其他String对象共享内部状态。最后,JVM规范明确指出使用反射来更改final的代码的行为是未定义的。 String物体的突变是危险的。

答案 2 :(得分:6)

当然,请使用StringBuilder.insert()

_sb.insert(0, _s);

答案 3 :(得分:0)

private static void appendZeroAtStart() {
        String strObj = "11";
        int maxLegth = 5;

        StringBuilder sb = new StringBuilder(strObj);
        if (sb.length() <= maxLegth) {
            while (sb.length() < maxLegth) {
                sb.insert(0, '0');
            }
        } else {
            System.out.println("error");
        }

        System.out.println("result: " + sb);

    }

答案 4 :(得分:-6)

import java.lang.StringBuilder;

public class Program {
    public static void main(String[] args) {

    // Create a new StringBuilder.
    StringBuilder builder = new StringBuilder();

    // Loop and append values.
    for (int i = 0; i < 5; i++) {
        builder.append("abc ");
    }
    // Convert to string.
    String result = builder.toString();

    // Print result.
    System.out.println(result);
    }
}

答案 5 :(得分:-13)

最好使用indexof()方法找到引号,然后在该索引后面添加一个字符串。

string s="hai";
int s=s.indexof(""");
相关问题