質問

私は引用符の数は以下のように変更される可能性がテキストのこの行を持っています:

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、コミージャス、トリック
、言葉、ある、コミージャス

役に立ちましたか?

解決

あなたはこの種の情報を魚に正規表現を使用することができます。

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

この例では、解析されている行の言語は、文字列リテラル内に二重引用符のエスケープシーケンスをサポートし、複数の「行」をまたがる文字列を含む、または単一引用符のような文字列のための他の区切り文字をサポートしていないことを前提としています。

他のヒント

Apacheのコモンズ・ラングライブラリにStringUtilsをチェックアウト - それは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();

まず、ユーザーが(等しくなければならないことに注意してください)ではなく==てください。彼らは文字列で、時には場合することができ、メモリ内の同じインスタンス、ある場合には「==」はデフォルトで要求します。 myString.equals(「...」)を使用すると、文字列の値を比較しています。

どのように私はあなたが何を意味するかわからないんだけど、引用符の間の値を取得しますについて。 「...」は、実際のオブジェクトです。また、あなたが行うことができます:

文字列webUrl = "www.eg.com"

あなただけの1行ではなく、ソースファイル全体を解析している場合は、

は、関数の文法に基づくパーサは、文字列に基づいてこれを実行しようとするよりも、より安全な選択肢である場合があります。

私はこれらがあなたの文法中の文字列リテラルであろうと推測しています。

あなたはを取得したい場合は、ファイルからのすべての出現

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

        }

    }

}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top