Je suis en train d'analyser certains HTML pour tirer tous les liens qui viennent après toutes les occurrences de la chaîne:Essayer d'analyser HTML à Swift 4 en utilisant uniquement la bibliothèque standard
market_listing_row_link « href = »
pour rassembler une liste d'URL d'éléments en utilisant uniquement la bibliothèque standard Swift 4. Ce que je pense avoir besoin est une boucle for qui vérifie les caractères avec une condition qui une fois la chaîne complète est trouvée, il commence alors à lire l'URL de l'élément suivant dans un tableau jusqu'à ce qu'une double citation soit atteinte, s'arrêtant puis répéter ce processus jusqu'à la fin du fichier. Légèrement familier en C, nous avons eu accès à une fonction (je pense que c'était fgetc) qui l'a fait en avançant un indicateur de position pour le fichier. Existe-t-il une manière similaire de faire cela dans Swift?
Mon code jusqu'ici ne peut trouver la première occurrence de la chaîne que je cherche quand il y en a 10 que j'ai besoin de trouver.
import Foundation
extension String {
func slice(from: String, to: String) -> String? {
return (range(of: from)?.upperBound).flatMap { substringFrom in
(range(of: to, range: substringFrom..<endIndex)?.lowerBound).map { substringTo in
String(self[substringFrom..<substringTo])
}
}
}
}
let itemListURL = URL(string: "http://steamcommunity.com/market/search?appid=252490")!
let itemListHTML = try String(contentsOf: itemListURL, encoding: .utf8)
let itemURL = URL(string: itemListHTML.slice(from: "market_listing_row_link\" href=\"", to: "\"")!)!
print(itemURL)
// Prints the current first URL found matching: http://steamcommunity.com/market/listings/252490/Wyrm%20Chest
cela comme un commentaire au lieu d'une réponse, car elle ne répond pas directement à votre question. Avez-vous envisagé d'utiliser [XMLParser] (https://developer.apple.com/documentation/foundation/xmlparser) à la place? L'analyse syntaxique XML est généralement préférée aux manigances regex en matière de HTML (voir, par exemple, [cette fameuse réponse Stack Overflow.] (Https://stackoverflow.com/questions/1732348/regex-match-open-tags-except -xhtml-self-contained-tags/1732454 # 1732454) –
@AlanKantz HTML n'est pas du code XML à moins qu'il ne s'agisse réellement de xHTML. – rmaddy
@AlanKantz Oubliez que c'est du HTML, je veux rechercher une chaîne de non-sens pour une séquence de caractères, lire les caractères qui suivent cette séquence dans une variable chaîne jusqu'à un certain caractère et continuer à chercher une autre occurrence de cette séquence le processus. – ANoobSwiftly