2017-12-18 12 views
1

Könnte mir jemand hilft folgendes Problem zu lösen: I-Elemente auf Seite gefunden, die ich suchte mitLassen Sie Text in Klammern nur

WebElement h2 = ol.findElement(By.xpath("../h2" + h2current)); 
     String h2currentShorted = h2.getText(); 
     String h2currentShorted2 = h2currentShorted.substring(24); 

Nun Originaltext ist auf mehreren Sprachen und ist daher unterschiedliche Größe (Anzahl von Charakteren). Beispiele:

Tidligere stillinger (1. Jul 2016 - 1. Jul 2017) 
Vergangene Gesamtwertung (1. Jul 2016 - 1. Jul 2017) 
Previous standings (1. Jul 2016 - 1. Jul 2017) 

Oben ist Text in drei verschiedenen Sprachen. Wie kann ich nur Text in Klammern aufnehmen und sonst nichts? Mit dem obigen Code entferne ich Zeichen, die nicht notwendig sind, aber wenn es eine Lösung für alle Sprachen gibt - nur um Text in Klammern aufzunehmen? Vielen Dank im Voraus

Antwort

2

Wie andere sagten, verwenden Sie einen regulären Ausdruck, aber betrachten Sie einen eleganteren Weg mit Gruppen.

Pattern p = Pattern.compile(".*\\((.*)\\).*"); 
Matter m = p.matcher(h2.getText()); 
String s = m.group(1); 

Die Variable s enthält nur den Text innerhalb der Klammern.

+0

Dies ist eine perfekte Lösung. Vielen Dank @Bastian Schoettle – Zoran

+0

Wahrscheinlich habe ich etwas falsch gemacht, wenn Sie das in Test eingeben (erste Zeile zeigt Fehler), bekomme ich diesen Fehler: ** illegale Escape-Zeichen ** Bitte helfen und danke – Zoran

+0

Sorry, in Java eins muss den Backslashes entkommen. Ich habe das vergessen, als ich den Code eingegeben habe, aber ich habe die Antwort entsprechend aktualisiert. –

2

Verwenden Sie einen regulären Ausdruck wie

\(.*\) 

oder verwenden String.indexOf die Positionen des (und) zu bestimmen.

+0

Regex ist die Lösung. Danke Index von wird nicht arbeiten, da es nicht die gleiche Länge auf verschiedenen Sprachen gibt – Zoran

Verwandte Themen