我有一个大文本文件 (25 MB)。我将其读入 NSString 变量中。我想使用“uppercaseString”将每个字符转换为大写。但该功能非常慢,需要几分钟。 有什么技巧可以让它工作得更快吗?
添加代码:
if let path = NSBundle.mainBundle().pathForResource("GERMANU", ofType: "txt") {
var error: NSError?
if let data = NSData(contentsOfFile: path, options: NSDataReadingOptions(), error: &error) {
if let datastring = NSString(data: data, encoding: NSMacOSRomanStringEncoding) {
var upper = datastring.uppercaseString
...
这是可以工作的代码,但速度很慢。只有最后一行始终需要。
最佳答案
String::uppercaseString
是瞬时的;创建字符串不是。
# Long time
12> var st : String = "".join(Array(count:25000000, repeatedValue: "a"))
st: String = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..."
# Short time
13> st.uppercaseString
$R8: String = "AAAAAAAAAAAAAAAAAAAAAAAAAAAA..."
鉴于您使用的是 Roman
编码,转换为大写可能并不简单。也许您可以尝试其他编码(如果有其他合适的编码)?您可以尝试使用 init?(...usedEncoding ...)
变体,并对结果调用 fastestEncoding
来进行一些探索。
注意:您可以使用以下方法直接从具有特定编码的文件创建 Swift 字符串:
if let datastring = String(contentsOfFile: path, encoding: ... , error: &error) {
var upper = datastring.uppercaseString
}
关于string - SWIFT:大写字符串的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31746668/