我正在做一些文本处理,涉及到将许多字符转换为字符串。输入是Character
的长序列,输出是根据某些规则从Character
序列中创建的多个字符串。
可以这样说:
let input = "The quick brown fox jumps over a lazy dog."
我想知道下列哪一项更有效:
let buffer = NSMutableString(capacity: MAX_SIZE)
var result = [String]()
for c in input {
buffer.append(String(c))
if (isComplete(buffer)) {
result.append(String(buffer))
buffer.deleteCharacters(in: NSRange(location: 0, length: buffer.length))
}
}
与:
var buffer = [Character]()
var result = [String]()
for c in input {
buffer.append(c)
if (isComplete(buffer)) {
result.append(String(buffer))
buffer.removeAll()
}
}
在我看来,第二种方法更好,因为它不需要将每个字符转换为String
来存储在NSMutableString
中,但是由于我们知道最大可能的缓冲区大小,第一种方法为可变字符串指定了capacity
,这在内存管理方面可能更好。当添加更多超出为缓冲区分配内存空间的字符时,内存重新分配?
谢谢!
发布于 2022-07-17 11:57:28
我们必须理解,NSMutableString给出了一个更受控的包装器来操作字符。可以使用多个字符串。
字符就像传统的数组,工作原理相同。更多的手工工作和数组的所有限制。
https://stackoverflow.com/questions/73011241
复制相似问题