ios – 在角色的第一场比赛中Swift分裂字符串

我正在尝试在 Swift中创建一个iOS应用程序,它要求我在一行的第一个冒号(:)中拆分一行文本.我已经尝试在字符串上使用componentsSeparatedByString方法,但除了收到错误声明“’Nsstring’没有名为’componentSeparatedByString’的成员”之外,该方法实际上并没有按我的意愿行事.

对于更多的上下文,我试图在游戏中分离一条线,即形式

<character name> : <line>

进入角色的名字和线条.我假设角色的名字中没有冒号,所以我想在该行的第一个冒号处拆分,这样如果文本中有任何冒号我就不会将该行的文本拆分成碎片.

所以,我的第一个问题:为什么不使用’componentsSeparatedByString’在以下代码中有效:(以下代码不是我之前提到的情况,但它是我想要修复并保留的东西,所以我想使用它而不是冒号破坏代码.)

var fileRoot = NSBundle.mainBundle().pathForResource("LonelyImpulse",ofType: "txt")
    var contents = Nsstring(contentsOfFile:fileRoot!,encoding: NSUTF8StringEncoding,error: nil)!
    let stringArray = contents.componentSeparatedByString("\n")

而我的第二个:我怎样才能在冒号(:)字符的第一个匹配中拆分字符串,而不是沿着所有匹配?

解决方法

首先

它只是一个拼写错误,而不是componentSeparatedByString,而是componentsSeparatedByString

let stringArray = contents.componentsSeparatedByString("\n")
//                                  ^

第二

你可以使用内置的split函数来指定maxSplit:

let str:Nsstring = "test:foo:bar"
let result = split(str as String,{ $0 == ":" },maxSplit: 1,allowEmptySlices: true)
// -> ["test","foo:bar"]

请注意,结果的类型是[String].如果你想要[Nsstring],只需投射它:

let result:[Nsstring] = split(string as String,allowEmptySlices: true)
//        ^^^^^^^^^^^

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...