2012-04-27 16 views
6

Sono consapevole di sostituire Stringhe di una stringa, ma funziona solo se so esattamente cosa voglio rimuovere.Rimuovi caratteri e tutto dopo da stringa

Se ho una stringa simile alla seguente:

"& funzionalità hi-ci-questo-è-un-test = hi-là"

Come rimuovo '& funzione' e tutto che viene dopo?

Qualsiasi aiuto sarebbe molto apprezzato. Grazie in anticipo!

MODIFICA: se è assolutamente necessario utilizzare REGEX, qualcuno potrebbe mostrarmi come utilizzarlo? Sono consapevole che è 10,7 in poi, ma sto bene con quello. Ancora meglio, un esempio di trimming String o l'utilizzo di NSScanner?

Grazie ancora a tutti.

MODIFICA: La soluzione indicata di seguito è quella corretta, ma ha provocato un arresto anomalo per me. Ecco come ho risolto il problema:

NSString *newString = [[oldString componentsSeparatedByString: @"&feature="] objectAtIndex:0]; 
+0

Mentre tecnicamente una soluzione, tale soluzione fa più lavoro del necessario (cioè, crea un array). Dovresti tornare alla soluzione di rdelmar e indagare su ciò che stavi facendo causando il crash, perché probabilmente lo stai ancora facendo e causerà altri problemi. –

+0

grazie v molto per il vostro aiuto ma credetemi ho preso una buona occhiata e ho appena creato una stringa, l'ho riempita con un URL, l'ho convertita, la ho rifilata e poi l'uso di questa soluzione si blocca. Sono fuori dalla mia profondità cercando di capire perché si blocca. – Cristian

+1

Come ho detto, dovresti fare una domanda al riguardo. Non puoi imparare nulla di utile correndo da ogni incidente che incontri; quando subisci un incidente, dovresti affrontarlo frontalmente e imparare da ciò che trovi. –

risposta

20

Esso può essere fatto senza REGEX simili:

NSString *string = @"hi-there-this-is-a-test&feature=hi-there"; 
    NSRange range = [string rangeOfString:@"&feature"]; 
    NSString *shortString = [string substringToIndex:range.location]; 
+0

questo provoca un arresto:/ – Cristian

+0

Non lo fa quando lo eseguo. Viene visualizzato un messaggio di errore – rdelmar

+0

@Cristian: Quindi stai facendo qualcos'altro. Questa è la soluzione corretta. Dovresti pubblicare una domanda a parte sul crash. –

1

Cercare corrispondenze di pattern, ovvero espressioni regolari.

Oh, wow, TIL non esiste un modo integrato per eseguire espressioni regolari in un Cacao Objective-C? secondo Regular expressions in an Objective-C Cocoa application

In ogni caso, ci sono librerie citate in questa domanda.

+0

non esiste un modo integrato? come 'stringByReplacingOccurrencesOfString() ma cancella tutto dopo? – Cristian

+0

Bene, è possibile codificare attorno ad esso con la propria funzione che esegue una chiamata integrata per ottenere la posizione della stringa corrispondente, quindi tagliare la stringa in quel punto. E se hai un ambiente abbastanza semplice, allora andrebbe bene. Ma una volta che il tuo progetto è cresciuto, ti verrà incollato il codice condiviso ... perché non usare una libreria robusta? – MarkHu

+0

È un progetto piccolo, e questo codice dovrebbe essere incluso in una funzione di loop, e c'è solo un evento specifico di cui ho bisogno per sbarazzarmi, che sta rimuovendo '& feature' e tutto il resto, questo non cambierà. Se potessi fornire un esempio di come trovarlo e poi di tagliarlo, sarei molto grato! – Cristian

Problemi correlati