La funzione seguente fornita di NSString
rimuove i tag HTML da quella stringa e restituisce il risultato anche come NSString
.Converti intervallo <Int> nell'intervallo <String.Index>
private func removeHTMLTags(source: NSString) -> NSString {
var range = NSMakeRange(0, 0)
let HTMLTags = "<[^>]*>"
var sourceString = source
while sourceString.rangeOfString(HTMLTags, options: NSStringCompareOptions.RegularExpressionSearch).location != NSNotFound {
range = sourceString.rangeOfString(HTMLTags, options: NSStringCompareOptions.RegularExpressionSearch)
sourceString = sourceString.stringByReplacingCharactersInRange(range, withString: "")
}
return sourceString;
}
Sto provando a riscrivere questo in puro Swift. Sto affrontando un problema con il tipo Range
in Swift.
Nella funzione di codice originale, la variabile range
è dichiarata di tipo NSRange
. Nella mia versione non posso farlo perché la linea sourceString.rangeOfString(HTMLTags, options: NSStringCompareOptions.RegularExpressionSearch)
all'interno del ciclo while restituisce il tipo Range<String.Index>
e mi darebbe l'errore Impossibile convertire il tipo dell'espressione '()' per digitare 'NSRange'.
Così ho dichiarato la variabile come questa var range = Range(start: 0, end: 0)
ma ora ho un paio di nuovi errori.
Impossibile convertire il tipo di espressione '()' per tipo di errore 'Gamma' alla linea
range = sourceString.rangeOfString(HTMLTags, options: NSStringCompareOptions.RegularExpressionSearch)
E 'Int' non è identico a 'String.Index' alla linea
sourceString = sourceString.stringByReplacingCharactersInRange(range, withString: "")
Ho cercato una soluzione a questo e mi sono imbattuto in questo post. Quindi ho modificato la dichiarazione delle variabili range
a questo.
var range = Range<String.Index>(start: 0, end: 0)
Ma ora ricevo questo nuovo errore! Argomento aggiuntivo 'end' in chiamata
Non riesco a trovare un modo per risolvere questo problema. Qualcuno può aiutare, per favore?
Grazie.
Fantastico! Enorme grazie come sempre. Ho bisogno di familiarizzare con questo legame condizionale di più. – Isuru
@Isuru: sei il benvenuto! –
Oltre a questa soluzione alternativa, esiste un modo per creare un 'String.Index' da un' Int'? – Rivera