2017-05-23 1 views
0

Je reçois une chaîne html du serveur. Si c'est vide, nous ne faisons rien. Sinon, nous les montrons sur UIWebView. Je peux facilement vérifier avec .isEmpty dans une simple instruction if.NSRegularExpression Vérifier le contenu de la chaîne HTML

Services.getBusinessProfile(countryCode: countryCode, companyId: companyData.cId) { (req, html) in 

      if !html.isEmpty { 
// rest of the code 

Le problème est, parfois je reçois balise vide:

<span style=\"font-family:HelveticaNeue; font-size: 16\"></span> 

Comment puis-je vérifier le contenu de cette balise? Je pense que je dois utiliser NSRegularExpression pour cela, comme ce fil: NSRegularExpression to extract text between two XML tags. Mais je n'ai aucune idée de comment l'utiliser.

+2

Utilisez un XML approprié/Analyseur HTML. Non seulement cela rendra votre vie beaucoup plus facile, mais techniquement, les expressions régulières ne sont pas suffisamment puissantes pour analyser XML/HTML dans le cas général. – Alexander

+0

J'y ai pensé, mais mon aîné a décidé de ne pas le faire car c'est seulement nécessaire dans cette ligne: D –

+0

Votre question n'est pas claire. Votre code HTML est-il cohérent? Je veux dire que vous essayez d'obtenir la chaîne entre '' et ''? Dans ce cas, quelle serait une chaîne vide? –

Répondre

1

Si vous avez juste besoin de récupérer la sous-chaîne entre la première balise span dans votre texte HTML, vous pouvez le faire en utilisant gamme de chaîne upperBound et lowerBound pour obtenir votre sous-chaîne comme suit:

let htmlString = "<span style=\"font-family:HelveticaNeue; font-size: 16\">Indonesia</span>" 

if let lower = htmlString.range(of: "<span style=\"font-family:HelveticaNeue; font-size: 16\">")?.upperBound, 
    let upper = htmlString.range(of: "</span>", range: lower..<htmlString.endIndex)?.lowerBound { 
    let text = htmlString[lower..<upper] // "Indonesia" 
}