如何修剪StringBuilder的字符串?[已关闭]
我们如何在不因使用而导致开销的情况下修剪值,从而为每个修剪调用创建新的和/或新实例?StringBuilder
StringBuilder.toString().trim()
String
StringBuilder
我们如何在不因使用而导致开销的情况下修剪值,从而为每个修剪调用创建新的和/或新实例?StringBuilder
StringBuilder.toString().trim()
String
StringBuilder
为什么 StringBuilder 没有 trim() 方法
trim()
无论哪种方式,答案都与解决您的问题无关。
以及我们如何修剪StringBuilder值?
最简单的方法是使用...StringBuilder.toString().trim()
我不想使用StringBuilder.toString().trim()。
在这种情况下,您需要执行在封面下执行的操作:匹配并删除前导和尾随空格。由于API没有正则表达式支持,因此您需要以这种困难的方式执行此操作;即,通过从前向前和向后向后迭代字符,以查看需要删除哪些字符,等等。trim()
StringBuilder
您确定您不喜欢以简单的方式做到这一点吗?如果没有,这个问答有一些示例实现,分析,基准测试等:
最后,您可以实现自己的具有方法的类的变体。您可以使用不同的内部表示形式,以便在开始时删除字符的操作不会复制字符。(我不会推荐这个...但是,如果您有务实的强烈需求,这是一种选择。StringBuilder
trim()
trim()
实际上,我处于一个循环中,我必须将此字符串与许多其他值进行比较,因此,如果我每次调用,它将创建一个新实例,并且我不想每次都创建新的String对象。
StringBuilder
StringBuilder.toString().trim()
另一方面,从开头删除字符需要复制所有剩余的字符。StringBuilder
也许你最好把完整的变成一个开始,然后当你使用和之类的东西时,你不会复制字符2。StringBuilder
String
trim()
substring()
1 - 对于那些声称这样说“没有建设性”的人来说,另一种选择是假装我们在设计决策时在房间里,我们确实听到了发生的辩论。但那将是一个谎言。坦率地说,指出这里没有人知道答案,而不是假装不是这样,这是有建设性的。为什么?因为很多读者不会意识到当时的Java设计过程是不透明的。
2 - 在 Java 7 之前,这些方法通过创建一个新的 String 来工作,该字符串共享原始 String
的后备数组...所以你最终只会复制字符串的控制信息。在Java 7中,他们更改了修剪
和子字符串
的实现,以便他们使用String构造函数来复制支持数组的子数组。
我不知道你想实现什么,但是如果你担心性能,也许你可以在附加到StringBuilder时执行修剪。
stringbuilder.append(string.trim())