как получить данные между кавычками в Java?

У меня есть это строки текста, как который могло измениться количество кавычек:

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"

Как я получаю данные между кавычками?

Результат должен быть:

Комиллаз
mas, Комиллаз, прием
a, слова, Комиллаз

24
задан vefthym 23 July 2019 в 23:02
поделиться

5 ответов

Вы можете использовать регулярное выражение, чтобы выудить такую ​​информацию.

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

В этом примере предполагается, что язык анализируемой строки не поддерживает escape-последовательности для двойных кавычек в строковых литералах, содержит строки, охватывающие несколько «строк», или поддерживает другие разделители для строк, такие как одинарные кавычки.

49
ответ дан 28 November 2019 в 22:40
поделиться
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();
0
ответ дан 28 November 2019 в 22:40
поделиться

Если вы анализируете весь исходный файл, а не только одну строку, анализатор, основанный на грамматике функции, может быть более безопасным выбором, чем попытки сделать это на основе строк.

Я предполагаю, что в вашей грамматике это будут строковые литералы.

0
ответ дан 28 November 2019 в 22:40
поделиться

Проверьте StringUtils в библиотеке Apache commons-lang - у него есть метод 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"));
15
ответ дан 28 November 2019 в 22:40
поделиться

Во-первых, обратите внимание, что вам следует использовать equals (), а не ==. «==» по умолчанию спрашивает, являются ли они одним и тем же экземпляром в памяти, что иногда бывает в строках. С myString.equals ("...") вы сравниваете значения строк.

Что касается того, как получить значения между кавычками, я не уверен, что вы имеете в виду. «...» - это реальный объект. В качестве альтернативы вы можете сделать:

String webUrl = "www.eg.com";

0
ответ дан 28 November 2019 в 22:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: