java - String.replace() 奇怪的行为

标签 java string replace

我必须用空格替换字符串。但是replace()方法的行为很奇怪。

这是完整的字符串:

Prova gestione spoiler.<br/><br/><spoiler>Primo spoiler. :zizi:</spoiler><br/><br/>Un po' di testo qui non fa mai male. :asd:

我需要去掉第一部分,即 Prova gestione 扰流符字符串。我动态地获取第一部分,即标记之前的字符串,因此每次它都是不同的字符串。

现在是棘手的部分。如果我这样做:

temp = text.replace(preSpoilerText, " ");

字符串不会被替换。但如果我这样做:

temp = text.replace("Prova gestione spoiler", " ");

字符串将被替换。

是否有我遗漏的东西,或者是否有更好的方法来替换整个字符串?

谢谢。

最佳答案

类似这样的事情

String foo="Prova gestione spoilerstuff I don't care about";
String bar="Prova gestione spoiler";

System.out.println(foo.replace(bar,""));
System.out.println(foo.replace("Prova gestione spoiler",""));

总是返回相同的结果

stuff I don't care about

由于非字母数字字符的存在,可能会出现一些奇怪的行为,就像这个说明

System.out.println("n".length());
System.out.println("\n".length());
System.out.println("\\n".length());

打印

1
1
2

关于java - String.replace() 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32554620/

相关文章:

java - 使用 Java 仅在文件的第一行将计数器附加到多个相同的列字

php - 使用 PHP 和 Regex 替换所有域名(包括子域名)

javascript - 使用 html 搜索文本换行

java - 没有找到 @Autowired 服务依赖类型的合格 Bean

windows - 如何在批处理文件中组合数字和字符串

c# - 从左到右应用字符串格式形式

c - C 中的 char *s[] 和 char s[][20] 有什么区别?

Java matchesAt() 在 C# 中等效

java - spring restTemplate动态映射

java - 流或 for 循环