Frage

Ich habe diese Textzeilen die Anzahl der Zitate könnte wie ändern:

Here just one "comillas"
But I also could have more "mas" values in "comillas" and that "is" the "trick"
I was thinking in a method that return "a" list of "words" that "are" between "comillas"

Wie erhalte ich die Daten zwischen den Anführungszeichen?

Das Ergebnis sollte sein:

comillas
mas, comillas, Trick
a, Worte sind, comillas

War es hilfreich?

Lösung

Sie können einen regulären Ausdruck verwenden, diese Art von Informationen zu fischen.

Pattern p = Pattern.compile("\"([^\"]*)\"");
Matcher m = p.matcher(line);
while (m.find()) {
  System.out.println(m.group(1));
}

In diesem Beispiel wird davon ausgegangen, dass die Sprache der Linie nicht Escape-Sequenzen für doppelte Anführungszeichen innerhalb Stringliterale unterstützt das analysiert wird, enthalten Zeichenfolgen, die mehrere „Linien“ umspannen, oder unterstützen andere Trennzeichen für Strings wie eine einzelne Anführungszeichen.

Andere Tipps

Überprüfen Sie heraus StringUtils im Apache commons-lang-Bibliothek -. Es hat eine substringsBetween Methode

String lineOfText = "if(getip(document.referrer)==\"www.eg.com\" || getip(document.referrer)==\"192.57.42.11\"";

String[] valuesInQuotes = StringUtils.substringsBetween(lineOfText , "\"", "\"");

assertThat(valuesInQuotes[0], is("www.eg.com"));
assertThat(valuesInQuotes[1], is("192.57.42.11"));
String line = "if(getip(document.referrer)==\"www.eg.com\" || getip(document.referrer)==\"192.57.42.11\"";
StringTokenizer stk = new StringTokenizer(line, "\"");
stk.nextToken();
String egStr = stk.nextToken();
stk.nextToken();
String ipStr = stk.nextToken();

Erstens, bitte beachten Sie, dass Sie sollten Benutzer gleich () statt ==. „==“ standardmäßig gefragt, ob sie die gleiche Instanz im Speicher sind, die manchmal in Strings kann der Fall sein. Mit myString.equals ( "...") Sie vergleichen die Werte der Strings.

Was, wie beurteilen Sie die Werte zwischen den Anführungszeichen erhalten Ich bin nicht sicher, was du meinst. „...“ ist ein aktuelles Objekt. Alternativ könnten Sie tun:

String webUrl = "www.eg.com";

Wenn Sie eine gesamte Quelldatei parsen, anstatt nur eine Zeile, ein Parser auf die Grammatik der Funktion basiert möglicherweise eine sicherere Wahl als zu versuchen, diese auf Strings basierend zu tun.

Ich vermute, dass diese Zeichenkette in Ihrer Grammatik sein würde.

Wenn Sie möchten, erhalten alle Vorkommen aus einer Datei :

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class testReadQuotes {


    public static void main(String args[]) throws IOException{

        Pattern patt = Pattern.compile("\"([^\"]*)\"");
        BufferedReader r = new BufferedReader(new FileReader("src\\files\\myFile.txt"));

        String line;

        while ((line = r.readLine()) != null) {

          Matcher m = patt.matcher(line);

          while (m.find()) {
            System.out.println(m.group(0));
          }

        }

    }

}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top