如何在字符串中插入字符(Java/Groovy)?

4

我有一个字符串:

string = abcdefghabcd

现在假设我想替换第一个出现的a。 我尝试了以下内容:
string[string.indexOf('a')] = '0'

但这似乎不起作用。我还有其他的方法可以做到这一点吗?
提前感谢您。
3个回答

7
在Java中,您可以使用String.replaceFirst()
String s = "abcdefghabcd";
s = s.replaceFirst("a", "0");
System.out.println(s);

输出将是:

0bcdefghabcd

警告: replaceFirst() 方法需要一个正则表达式:因此,如果您想替换特殊字符,如[,则需要在其前面放置\进行转义。由于\本身是一个特殊字符,因此您需要将其加倍,如下所示:
s = s.replaceFirst("\\[", "0");

这里是Java正则表达式的文档。此外,这里是Oracle关于字符串字符操作的Java教程。


谢谢。但是如果我想用 0 替换 "[",会怎样呢?我得到了一个 Caught: java.util.regex.PatternSyntaxException: Unclosed character class near index 0 错误。 - batman
蝙蝠侠:那是因为replaceFirst期望一个正则表达式,而“ [”是正则表达式中的特殊字符。 - nairbv

2
你应该知道,在Java中,字符串是不可变的。它们不能被改变。任何你用来“改变”字符串的方法都必须返回一个新的字符串。如果你想直接修改字符串,你需要使用可变字符串类型,比如StringBuilder。
String API文档中有许多方法可以帮助你获得修改后的字符串,包括s.replace()、s.replaceAll()、s.replaceFirst()等,或者你可以使用substring和"+"的组合来创建一个新的字符串。
如果你真的想像你最初的例子一样将字符串视为数组,你可以使用String.getChars获取一个字符数组,对其进行操作,然后使用String(char[])构造函数将其转换回一个String对象。

1
在这个程序中,你需要使用Java中String类的replaceFirst()方法。
  /*
Java String replace example.
This Java String Replace example describes how replace method of java String
class can be used to replace character or substring by new one.
*/

public class JavaStringReplaceExample{

    public static void main(String args[])
{

String str="abcdefghabcd";

 System.out.println(str.replaceFirst("a", "0"));
}
 }

您可以参考这里获取详细信息。


3
我建议将来不要提供指向RoseIndia的链接,因为他们关于Java的帖子经常包含已弃用的代码和/或不好的实践。 - Radu Murzea

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接