【发布时间】:2011-06-25 07:55:24
【问题描述】:
在连接大量字符串时,建议我使用StringBuilder 这样做:
StringBuilder someString = new StringBuilder("abc");
someString.append("def");
someString.append("123");
someString.append("moreStuff");
相对于
String someString = "abc";
someString = someString + "def";
someString = someString + "123";
someString = someString + "moreStuff";
这将导致创建相当多的字符串,而不是一个。
现在,我需要做类似的事情,但我不使用串联,而是使用 String 的 replace 方法:
String someString = SOME_LARGE_STRING_CONSTANT;
someString = someString.replace("$VARIABLE1", "abc");
someString = someString.replace("$VARIABLE2", "def");
someString = someString.replace("$VARIABLE3", "123");
someString = someString.replace("$VARIABLE4", "moreStuff");
要使用 StringBuilder 完成同样的事情,我必须这样做,只是为了一次替换:
someString.replace(someString.indexOf("$VARIABLE1"), someString.indexOf("$VARIABLE1")+10, "abc");
所以我的问题是:“是使用 String.replace 并创建许多额外的字符串更好,还是继续使用 StringBuilder 并有很多像上面那样的冗长的行?”
【问题讨论】:
-
如果产生性能问题,请更改它。如果没有更重要的更改要执行,请更改它。如果输入真的很大并且经常使用,请更改它。顺便说一句,第二种方法不起作用,因为它只会替换它一次,你必须把它放在一个 while 循环中。看看我的回答。
标签: java string replace stringbuilder