Swift 2和Linux / OS X的区别

我试图从OS X移植一些基本的应用程序到Linux,但似乎在Linux平台上甚至缺less基本的东西。 是否有一些文件缺less什么? 这里是例子:

exmcast.swift:7:20: error: value of type 'String' has no member 'stringByReplacingOccurrencesOfString' let name: String = address.stringByReplacingOccurrencesOfString(".", withString: "_") 

这个简单的代码在OS X上工作。在Linux上 – 你会看到结果。 当没有什么基本信息丢失时,很难移植任何东西。 而且它看起来像甚至基本的东西是失踪..

Swift 3将于2016年秋季发布。

最近开源的Swift和Linux端口正在进行中 :

港口仍在进行中,但我们很高兴地说,它现在可用于实验。

你可以去Swift.org和github.com/apple,并享受奇妙的工作。

当您发现一些尚未实现的东西时,您可以提交错误和/或帮助实现该功能。

Swift的新版本将定期在Swift.org上发布。

你试图调用的方法实际上是NSString的一部分。 字符串是在幕后桥接NSString,这就是为什么你可以在OS X上使用这种方法。NSString是基础框架的一部分,基金会并没有完全实现Linux。 您可以在这里查看Foundation的各个部分的状态 : 基础状态 。 NSString目前只部分实现。

在OSX上,您仍然需要导入Foundation

你可以自由地使用纯Swift解决方案

  let str = "alfa.beta" // (1) let str1 = str.characters.map { $0 == "." ? "_": $0 }.reduce("") { (str, c) -> String in str + String(c) } // (2) let str2 = String(str.characters.split(".").joinWithSeparator(["_"])) print(str,str1,str2) // alfa.beta alfa_beta alfa_beta 

对于更先进的东西,你有强大的功能

 mutating func replaceRange<C : CollectionType where C.Generator.Element == Character>(subRange: Range<Index>, with newElements: C) 

要么

 mutating func replaceRange(subRange: Range<Index>, with newElements: String)