如何在Java中向字符串插入反斜杠?

4

我有一个字符串,想要将其中一个字符替换为反斜杠\

我尝试了以下方法,但没有成功。

engData.replace("'t", "\\'t")

并且

engData = engData.replace("'t", String.copyValueOf(new char[]{'\\', 't'}));

输入: "can't"

预期输出: "can\'t"

你知道如何实现吗?


6
一个包含实际输出和期望输出的样例I/O可以帮助更好地理解这个问题。 - Rahul
请发布输入和其结果? - Pulah Nandha
你尝试过使用 engData.replace("想要替换的字符", "\") 吗? - K.C.
@K.C. 是的,我尝试过了,但没有运气。 - AndroidDev
@Naresh Noby:你正在用('t)替换('t)(并没有替换,你插入了一个新字符)……在问题中,你提到想要用反斜杠\替换其中一个字符。那么你想要做什么? - prime
显示剩余4条评论
6个回答

9

试一试...

    String s = "can't";
    s = s.replaceAll("'","\\\\'");
    System.out.println(s);

输出:
    can\'t

这将在您的字符串中用 \ 替换每个 ' 出现。

4
尝试像这样做。
engData.replace("'", "\\\'");

输入:can't

期望输出:can\'t


1
由于它在字符串中,因此无需转义 '。此外,这将替换所有单引号。这将使 "can't. 'hi'. 'h'" 变成 "can\'t. \'hi\'. \'h\'"。OP似乎只要求更改t之前的单引号。 - Justin
@ Quincunx :是的。问题陈述没有提到确切的期望。不够清晰。但是我们可以看到这是被接受的答案 :) - prime
1
@AmitGupta,你在第二个参数中仍然有一个转义的 ' - Justin
1
似乎只需要 engData.replace("'", "\\'");,或者有什么问题吗? - Roman Golyshev

2
在Java中,String是不可变的。您需要将修改后的字符串重新赋值给它本身。
engData = engData.replace("'t", "\\'t"); // assign the modified string back.

这对我来说似乎是正确的。问题在于提问有误。“我想用反斜杠 \ 替换其中一个字符,但你必须插入一个反斜杠,没有任何字符会被替换...” - K.C.
没有使用反斜杠或其他替换。只是改变的字符串没有被重新赋值,因此更改没有得到反映。 - Rahul
对不起,我的英语不好! - AndroidDev
没问题。你问了一个合适的问题。解决方法是将值重新赋回去。替换字符串或替换值本身没有任何问题。 - Rahul
没问题 :) 只需点赞正确的答案并接受一个即可。 - K.C.

2
这可以通过使用正则表达式实现:

regex

engData = engData.replaceAll("('t)","\\\\$1");
< p > 指定一个't将匹配任何包含't的字符串。最后,第二部分用反斜杠字符替换了这样的字符串:\\\\(四个是因为这个),而第一个组是:$1。因此,您正在使用\'t替换任何子字符串't


可以不使用正则表达式来实现同样的事情,您尝试的方式(请参见此处的输出):

engData = engData.replace("'t","\\'t"); //note the assignment; Strings are immutable

请参见 String.replace(CharSequence, CharSequence)

0
以下方法适用于我:
class Foobar {
  public static void main(String[] args) {
    System.err.println("asd\\'t".replaceAll("\\'t", "\\\'t"));
  }
}

0
对于字符串实例,您可以使用str.replaceAll(),它将返回一个包含所请求更改的新字符串:
String str = "./";
String s_modified = s.replaceAll("\\./", "");

1
你也可以使用 str = str.replaceAll("\\./","");,这个方法可以正常工作。 - Vinith

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