In questo contesto, né il metodo né il metodo characters.split(" ")
sono il "metodo migliore" . Entrambi questi metodi attraversano l'intero oggetto String
e danno come risultato un array String
. Solo dopo che l'array è stato calcolato estraiamo la prima voce di questo array. Se stiamo trattando una stringa enorme, questo non è assolutamente necessario in questo contesto e si tradurrà in un inutile sovraccarico.
Invece, per una stringa enorme, il seguente metodo è quello di preferire:
let firstDateEntryFast = date.substringToIndex((date.rangeOfString(" ")?.first)!)
Questo cercherà l'indice della prima occorrenza di " "
, e successivamente restituire la sottostringa dall'inizio della stringa originale soltanto alla prima occorrenza. Ad esempio, non analizzerà mai né utilizzerà la stringa originale (in questo contesto: ipotizzata grande) oltre il punto della prima occorrenza " "
.
Si noti tuttavia che a causa dello scostamento forzato (operatore (!)), Questo si bloccherà in fase di esecuzione se la stringa non contiene alcuna istanza di " "
. Quindi, per stare al sicuro, e seguire la convenzione facoltativa di Swift, usarlo in una if let
clausola:
if let myRange = date.rangeOfString(" ") {
let firstDateEntryFast = date.substringToIndex(myRange.first!)
// at this point, you know myRange is non-empty, and hence, .first can be
// force-unwrapped
}
else {
let firstDateEntryFast = date
// no " " separation, unexpected? -> action
}
Come nella mia prima versione della risposta, split
può essere utilizzato come alternativa (paragonabile con componentsSeparatedByString
):
var date = "1,340d 1h 15m 52s"
let dateAsArray = date.characters.split(" ").map{ String($0) }
let firstDateEntry = dateAsArray[0]
alternativa, saltare tutti memorizzazione in un array e direttamente ottenere la prima voce
var date = "1,340d 1h 15m 52s"
let firstDateEntryDirectly = String(date.characters.split(" ")[0])
stringbytrimming personaggi –
@UmaMadhavi Non voglio solo per sbarazzarsi di tutto ciò che è te spazi. Voglio ottenere i personaggi prima del primo spazio. – senty
use (date.componentSeparatedByString ("") as! NSArray) [0] –