Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Alle Links in einem Text suchen und ersetzen mit einem neuen Link
ich möchte gerne folgendes implementieren:
- Alle Links sollen in einem Text gesucht werden
- Jeder Link soll dann mit einem neuen Link ersetzt werden (replace Methode)
a) Wie suche ich die Links?
Welche verschiedenen "Linkformen" muss ich beachten.
Finding the perfect website domain is as easy as 1-2-3. Buy a domain name, build and host a website, and enjoy our professional online marketing tools.
Finding the perfect website domain is as easy as 1-2-3. Buy a domain name, build and host a website, and enjoy our professional online marketing tools.
Finding the perfect website domain is as easy as 1-2-3. Buy a domain name, build and host a website, and enjoy our professional online marketing tools.
Finding the perfect website domain is as easy as 1-2-3. Buy a domain name, build and host a website, and enjoy our professional online marketing tools.
www.domain.com
Ich hätte gerne eine Methode wie diese:
b) Wie baue ich die Methoden auf? Ich brauche doch erst mal eine Methode, die mir alle Links sucht und dann in eine Liste speichert? Danach ersetzte ich den Original Link und füge ihn wieder in den Text ein?
Wo willst du alle Links ersetzen? In einem HTML Dokument? Grundsätzlich ist das nicht trivial und eigentlich auch fast unmöglich ohne entsprechende Bibliotheken, den Links können beliebig komplex mit Javascript maskiert werden.
Wenn man das mal außen vor lässt, muss man nach a-tag suchen und da das Attribut href auswerten: https://wiki.selfhtml.org/wiki/HTML/Textauszeichnung/a nach was genau du suchst, und was du ersetzt haben willst, musst du wissen.
Wo willst du alle Links ersetzen? In einem HTML Dokument? Grundsätzlich ist das nicht trivial und eigentlich auch fast unmöglich ohne entsprechende Bibliotheken, den Links können beliebig komplex mit Javascript maskiert werden.
Wenn man das mal außen vor lässt, muss man nach a-tag suchen und da das Attribut href auswerten: https://wiki.selfhtml.org/wiki/HTML/Textauszeichnung/a nach was genau du suchst, und was du ersetzt haben willst, musst du wissen.
Der Text kann ein ganz normaler String sein (also kein HTML). Es kann aber auch ein HTML Text sein.
Nach href zu suchen würde daher nur bei letzterem funktionieren.
Currently I have an input box which will detect the URL and parse the data. So right now, I am using: var urlR = /^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+) (?::(\d+))?(?:\/([^?#]*))...
Also einen ganz einfachen würde ich dann z.B. so aufbauen: (https|http)+:\/\/(\w[a-zA-Z0-9-_.]*)+(:\d*|)(\/\S*|)
Das sind also:
- ein https oder http
- ://
- Ein Name (optional), der mit einem Zeichen anfangen muss und dann noch Zeichen,Ziffern,.-_ haben kann ..
- Optional der Port
- Optional noch ein / mit non whitespaces
Nicht optimal, aber da findet man auf SO bestimmt noch besseres ...
Ok, danke... Aber wie mache ich dann die Suche konkret?
Brauche ja sowas in der Art. Bin mir aber nicht sicher, ob das mit dem Replace, Pattern und Matcher so passt? Die zweite Methode wird natürlcih angepasst, dass ein richtiger Link entsteht, habe jetzt nur mal zum Testen einen statischen Link verwendet (123456).
Java:
public String replaceLinks(String originalText){
// 1. Nach Links suchen
String linkRegex = "[(http(s)?):\\/\\/(www\\.)?a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)";
Pattern p = Pattern.compile(originalText);
Matcher m = p.matcher(linkRegex);
while (m.find()) {
bodyText.replace(m.group(), m.replaceAll(m.group()));
}
return bodyText;
}
private String generateNewLink(String originalLink){
String newLink= "123456";
return newLink;
}
Dies ist eine Zeile, die zu viel auf einmalt tut.
Fang doch mal klein an und speichere alles in einer Variblen (die du im Dedagger anschauen kannst oder mit System.out ausgeben kannst)