Pregunta

Tengo esta líneas de texto del número de cotizaciones podría cambiar como:

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"

¿Cómo puedo obtener los datos entre las cotizaciones?

El resultado debe ser:

comillas
Mas, comillas, truco
una, es decir, son, comillas

¿Fue útil?

Solución

Puede utilizar una expresión regular para pescar a cabo este tipo de información.

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

En este ejemplo se asume que el lenguaje de la línea que se está analizando no admite secuencias de escape para las comillas dobles dentro de la cadena, contiene cadenas que abarcan varias "líneas", o apoyar a otros delimitadores de cadenas como una comilla sencilla.

Otros consejos

Salida StringUtils en la biblioteca Apache commons-lang -. Que tiene un método substringsBetween

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();

En primer lugar, tenga en cuenta que se debe hacer el usuario es igual a () en lugar de ==. "==" por defecto pregunta si son la misma instancia en la memoria, lo que a veces Cuerdas puede ser el caso. Con myString.equals ( "...") que está comparando los valores de las cuerdas.

En cuanto a ¿cómo obtener los valores entre las comillas no estoy seguro de lo que quiere decir. "..." es un objeto real. Si lo prefiere puede hacer:

Cadena WebUrl = "www.eg.com";

Si está analizando un archivo fuente de todo en lugar de sólo una línea, un analizador basado en la gramática de la función podría ser una opción más segura que tratar de hacerlo sobre la base de las cadenas.

Supongo que estos serían los literales de cadena en su gramática.

Si desea obtener todas las ocurrencias de un archivo

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));
          }

        }

    }

}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top