Swift 2:如何将子字符串带到字符的第一个索引?

Car*_*ung 1 swift

我对Swift很新; 我花了一个上午阅读StackOverflow并尝试了许多策略,徒劳无功,以实现以下目标:

我有一个字符串,说"12345是你的号码!"

我想将"12345"提取到变量中.

在Java中,我会做类似的事情:

String myStr = "12345 is your number!";
return myStr.substring(0, myStr.indexOf(" "));
Run Code Online (Sandbox Code Playgroud)

我如何在Swift中做类似的事情?我不想硬编码关于结束指数将是什么的任何假设.它可能是5个字符,也可能不是.我只想把所有内容的子字符串带到第一次出现的"",无论在哪里.

我到目前为止最接近的是:

var myMessage  = "12345 is your number!"
myMessage.endIndex.advancedBy(myMessage.characters.count - myMessage.characters.indexOf(" "))
Run Code Online (Sandbox Code Playgroud)

但它不会因为我还没完全编译而被编译("二进制运算符' - '不能应用于Distance类型的操作数(又名'Int')和'String.CharacterView.Index?'")

对此有任何帮助表示赞赏.谢谢.

col*_*tam 6

这样的事情应该有效:

myMessage.substringToIndex(myMessage.characters.indexOf(" ")!)
Run Code Online (Sandbox Code Playgroud)

请注意,在此代码中我强制解包可选.如果您不能保证在字符串中有该空格,那么将索引放在可选绑定中可能更有意义.

使用可选绑定,它看起来像这样:

if let index = myMessage.characters.indexOf(" ") {
    let result = myMessage.substringToIndex(index)
}
Run Code Online (Sandbox Code Playgroud)