添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

使用StringBuilder替换所有出现的String?

我错过了什么,或者StringBuilder是否缺少与普通String类相同的“将所有出现的字符串A替换为字符串B”的函数? StringBuilder替换功能并不完全相同。 有没有任何方法可以更有效地使用普通的String类生成多个字符串?

garsh0p asked 2019-06-19T10:55:12Z

13个解决方案

69 votes

好吧,你可以写一个循环:

public static void replaceAll(StringBuilder builder, String from, String to)

int index = builder.indexOf(from);

while (index != -1)

builder.replace(index, index + from.length(), to);

index += to.length(); // Move to the end of the replacement

index = builder.indexOf(from, index);

请注意,在某些情况下,使用lastIndexOf可能会更快,从后面工作。 我怀疑如果你用一个短字符串替换长字符串就是这种情况 - 所以当你开始时,任何替换都要少复制。 无论如何,这应该给你一个起点。

Jon Skeet answered 2019-06-19T10:55:33Z

33 votes

你可以使用Pattern / Matcher

将此实例的子字符串中所有指定字符的匹配项 替换 为其他指定字符。  命名空间:System.Text  程序集:mscorlib(在 mscorlib.dll 中)  语法  C#  public StringBuilder Replace (  char oldChar,  char newChar,  int startIndex,  int count  )  参数  oldChar  要 替换 的字符。  newChar 替换 oldChar 的字符。  startIndex  此实例中子字符串开始的位置。  count  子字符串的长度。  返回值  对此实例的引用,其中从 startIn * @return static StringBuilder replace ( StringBuilder sb, String oldStr, String newStr){ return sb. replace (sb.indexOf(oldStr), sb.indexOf(oldStr) + oldStr.len. StringBuilder 类的 replace ()方法 ( StringBuilder Class replace () method) replace () method is available in java .lang package. replace ()方法在 java .lang包中可用。 replace () method is used to replace s the set of charac... // StringBuilder // String 类是 final,无法被继承的;所以 StringBuilder 并不是继承自 String 类;// 而 String 内部维护的object[]数组也是final,无法被 修改// String 是无法被修改的,而平时对 String 的修改,其实是新建了一个 String 对象;//如果需要频繁修改字符串的内容,建议 使用 StringBuilder // String ... Java StringBuilder replace ()方法 java .lang. StringBuilder . replace ()方法按照这个顺序,在指定的字符串的子字符串 替换 字符。子串开始在指定start的 索引,并延伸到该字符 end - 1,或如果序列的末端不存在这样的字符。1 语法public StringBuilder replace (int start, int end, String ... stringbuilder 一.字符串基本操作1.indexof():检索字符串位置##返回“是”字所在的下标 String str = “这是个字符串”;int index = str.indexOf(“是”);##从下标为 2 的字符开始向后检索(包括下标2)index = str.indexOf(“是”,2);2.lastIndexOf():检索最后一次 出现 的位置##返回 “是”字,字符串最后一... String 类 主要有三种: (1) replace (char oldChar, char newChar):将所有与oldChar相同的字符 替换 为newChar,返回新的字符串,原字符串不改变。 (2) replace All( String regex, String replace ment) :将所有与regex相同的字符串 替换 replace ment,返回新的字符串,原字符串不改变。 (3) replace First( String regex, String replace ment):将第一个与re.. String 对象是不可改变的。每次 使用 System. String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以 使用 System.Text. StringBuilder 类。例如,当在一个循环中将许多字符串连接在一起时, 使用 StringBuilder 类可以提升性能。 通过用一个重载的构造函数方法初始化变量,可以创建 String Build String 中的 replace (char oldchar,char newchar) 方法意思将这个字符串中的所有的 oldchar 全部换成 newchar , 并返回一个新的字符串. String str = "CSDN博客"; String str1 = str. replace ("博客", "牛批"); //str1为 "CSDN牛批" public static final String URL = "http://xx.xxx.com/update?id=ID&na 大多数开发人员理所当然地以为性能优化很复杂,需要大量的经验和知识。好吧,不能说这是完全错误的。优化应用程序以获得最佳性能不是一件容易的事情。但是,这并不意味着如果你不具备这些知识,就不能做任何事情。这里有11个易于遵循的建议和最佳实践可以帮助你创建一个性能良好的应用程序。大部分建议是针对 Java 的。但也有若干建议是与语言无关的,可以应用于所有应用程序和编程语言。在讨论专门针... 当对字符串进行修改的时候,需要 使用 String Buffer和 StringBuilder 类。 和 String 类不同的是, String Buffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未 使用 对象。 StringBuilder String Buffer最大的不同: StringBuilder 的方法不是线程安全的。则在要求线程安全情况下,必须 使用 String Buffer类。 StringBuilder 相较于 String Buffer具有速度优势。 public cla