Ich habe einen NSString mit Web-Links drin. Ich muss alle Weblinks in der Zeichenfolge finden, die mit http: // beginnt. Was ist der beste Weg, dies zu tun?Suche nach Web-Links in einem NSString
Antwort
Verfahren
- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script
gibt Ihnen die Möglichkeit, benutzerdefinierte JavaScript auszuführen. Das JavaScript hat möglicherweise Zugriff auf das DOM, wenn es also einfach sein sollte, alle Anchor-Tags zu extrahieren und zurückzugeben.
Natürlich habe ich nur die kleinsten iPhone Apps geschrieben und bin nicht sehr vertraut mit JavaScript oder dem DOM, also könnte ich hier weit weg von der Basis sein.
Mit Blick auf dem DOM und JavaScript kann es so einfach wie
anchors = [htmlview_object stringByEvaluatingJavaScriptFromString @"document.anchors"];
, aber auch hier sein, ich habe nicht wirklich wissen, was ich rede.
Versuchen Sie folgendes:
javascript = @"function return_links() {\n"
" var a = new Array;\n"
" for (i = 0; i < document.anchors.length; i++) {\n"
" a.push(document.anchors[i].href);\n"
" }\n"
" return a.join(\"\\n\");\n"
"}\n"
"return_links();\n";
links = [htmlview_object stringByEvaluatingJavaScriptFromString javascript];
Der beste Weg, um Links in einem NSString ein HTML-Parser finden Parsing HTML on the iPhone zu finden ist. Wenn Sie eine Regex verwenden müssen (und Can you provide some examples of why it is hard to parse XML and HTML with a regex? sehen, warum Sie nicht sollten), scheint PCRE für das iPhone verfügbar zu sein. Eine häufige und fehlerbehaftete Regex für Links ist /href="(.*?)"/
.
Natürlich ist der beste verfügbare Parser wahrscheinlich das native HTML-Anzeige-Widget, und da Sie JavaScript ausführen können (siehe meine ursprüngliche Antwort auf Ihre ursprüngliche Frage), sollten Sie die Anker aus dem DOM extrahieren können (document.anchors) und schreibe/schreibe was immer du brauchst um document.write() und die anderen DOM Methoden zu benutzen.
- 1. Weblinks in Textansicht
- 2. Effizient nach NSString in einem Satz suchen
- 3. Suche NSString Problem
- 4. Suche nach einem Wort
- 5. iPhone: Kann ich NSString Suche in NSArray
- 6. Suche nach einem fehlenden .bash_profile
- 7. Suche nach einem fehlenden Index
- 8. Suche nach Junk-Zeichen in einem String
- 9. Suche nach einem Punkt in html5 Video
- 10. Suche nach fehlenden Werten in einem Array
- 11. Suche nach einem Wort in einer Spalte
- 12. Java - Suche nach Dateien in einem Verzeichnis
- 13. Suche nach einem bekannten Pfad in OrientDB
- 14. Suche nach einem Wort-Präfix in Python
- 15. Suche nach einem Teilstring in Velocity
- 16. Suche nach einem Wert in gesegnetem Hash
- 17. Suche nach einem gegabelten Repo in GitHub
- 18. Suche nach einem Wort in Trie
- 19. Suche nach einem Minimalwert in einer Unterabfrage
- 20. Suche nach in einem getrennten String Spalte
- 21. Suche nach freien Steckplätzen in einem Buchungssystem
- 22. Suche nach bestimmten Wörtern in einem Satz
- 23. Suche nach einem Datum aus einem SUM
- 24. Suche nach Strings in einem Textfeld, die in einem DIV
- 25. Wie suche ich nach einem Element in einem Golang Slice
- 26. Suche nach einem Element in einem Array mit jQuery.inArray()
- 27. Suche nach einem numerischen Index in einem Javascript-Array
- 28. Suche nach einem Schlüsselwort in einem GitHub-Wiki
- 29. Suche nach einem Strukturelement in einem Vektor von Elementdaten
- 30. Suche nach einem Multibyte-String in einem anderen Multibyte-String
Danke. Ich habe die Frage geändert, da ich eine Zeichenfolge anstelle von UIWebView suchen kann. Ich muss an diese Zeichenfolgen anhängen, bevor sie in das UIWebView gehen. – 4thSpace
Sie können auch JavaScript und das DOM verwenden, um die Seite zu ändern, nachdem sie mit document.write() geladen wurde. –
Ich habe die Technik ausprobiert, die Sie erwähnt haben. Anker scheint keine Schnur zu haben. Im Debugger ist Zusammenfassung leer. Es hat eine gültige Speicheradresse, aber nicht sicher, was drin ist. – 4thSpace