2

値を .txt ファイルから分離する必要があります。LineNumberReader を作成し、.split("\t") を使用して単語を区切りましたが、最後から 2 番目の値 (q 値) だけが必要です。.split() を指定するオプションはありますか?

これは私の.txtファイルです

test_id gene_id gene    locus   sample_1    sample_2    status  value_1 value_2 log2(fold_change)   test_stat   p_value q_value significant
XLOC_000001 XLOC_000001 TC012951    ChLG10:20399-27664  naive   BttO    NOTEST  0   0.0498691   1.79769e+308    1.79769e+308    0.210754    1   no
4

3 に答える 3

1
String[] array = someString.split("\t");
String secondToLast = array[array.length - 2];
于 2013-02-06T14:27:36.323 に答える
1

メソッドを使用して、String#split(String regex, int limit)抽出する列の後で分割を停止し、1 行のコードで必要な文字列を取得できます。

    String line = "A\tB\tC\tD\tE\tF"; // tab separated content
    int column = 3; // specify the column you want (first is 1)
    String content = line.split("\t", column + 1)[column - 1]; // get content 
    System.out.println(content);  // prints C (3rd column)
于 2013-02-06T14:31:31.777 に答える
0

次の行があるとします。

XLOC_000001 XLOC_000001 TC012951    ChLG10:20399-27664  naive   BttO    NOTEST  0   0.0498691   1.79769e+308    1.79769e+308    0.210754    1   no

そしてあなたが欲しい1(最後から2番目の要素)

次の式を使用できます。

String s ="XLOC_000001 XLOC_000001 TC012951\tChLG10:20399-27664\tnaive\tBttO\tNOTEST\t0\t0.0498691\t1.79769e+308\t1.79769e+308\t0.210754\t1\tno";
Matcher m = Pattern.compile("(?:\t|^)([^\t]*?)\t[^\t]*?(?:\\n|$)").matcher(s);
if(m.find())
    System.out.println(m.group(1));

または、関数でラップ:

private static final Pattern pattern = Pattern.compile("(?:\t|^)([^\t]*?)\t[^\t]*?(?:\\n|$)");
public static final String getPenultimateElement(String line) {
    Matcher m = pattern.matcher(line);
    if(m.find())
        return m.group(1)
    return null; // or throw exception.
}

または、呼び出し元がセパレーターを指定できる場所:

public static final String getPenultimateElement(String line, String separator) {
    separator = Pattern.quote(separator);
    Matcher m = Pattern.compile("(?:" separator + "|^)([^" + separator + "]*?)" + separator + "[^" + separator + "]*?(?:\\n|$)").matcher(line);
    if(m.find())
        return m.group(1)
    return null; // or throw exception.
}
于 2013-02-06T14:34:48.157 に答える