2017-09-22 33 views
1

试图从Swift中的字符串中移除第一个字符。我使用下面编写的代码,但第二行不断崩溃我的应用程序。Swift中的字符串基础知识

这不是解开字符串索引的正确方法吗?什么是?

var tempText = text 
let toRemove = tempText?.startIndex ?? String.Index(0) 
tempText?.remove(at: toRemove) 
+0

什么是崩溃的消息?字符串是否为空? – dan

+0

您可能希望看到https://stackoverflow.com/questions/28445917/what-is-the-most-succinct-way-to-remove-the-first-character-from-a-string-in-swi – rmaddy

回答

1

要初始化String.Index型,而不是获取tempText字符串的索引。

而且,startIndex不是可选的tempText,但是是。

您应该检查是否存在tempText和不为空(你可以简单地这样做有if let),并在startIndex删除字符,如果这些条件相匹配。

var tempText = text 

if let toRemove = tempText?.startIndex { 
    tempText?.remove(at: toRemove) 
} 
+0

谢谢,这清理完美。现在很明显,你解释* facepalm * – daredevil1234

+0

耶稣,所有的力量解开了什么?你*已经*有一个if语句,只需将其更改为条件绑定即可。 – Alexander

+0

@ the4kman这是真的吗? 'tempText = tempText?.characters.dropFirst()。map(String.init)?? tempText' – Alexander

3

您可以使用收集方法dropFirst:

if let text = text { // you need also to unwrap your optional 
    let tempText = String(text.characters.dropFirst()) // And initialize a new String with your CharacterView 
} 

在斯威夫特4字符串符合集合,以便你可以在你的字符串直接使用它:

if let text = text { 
    let tempText = text.dropFirst() // "bc" 
}