1

今、私は Java IO に関するタスクを持っています。ファイルを1行ずつ読み取り、このデータをデータベースに保存する必要がありますが、問題が発生しました。

"desk","12","15","(small,median,large)"

string.split(",")で分割し、各列にデータを保存するために使用したい。しかし、()内のデータも分割されていることがわかりました。分割(小、中央値、大)したくなく、この整合性を維持したいと考えています。どうやってやるの?正規表現を使用できることはわかっていますが、その方法が本当にわかりませんか?

4

3 に答える 3

0

Patternと を使用してこれを解決できMatcherます。分割を使用するソリューションは、厄介な回避策のように思えます。次に例を示します。

public static void main(String[] args){
    String s = "\"desk\",\"12\",\"15\",\"(small,median,large)\"";
    Pattern p = Pattern.compile("\".+?\"");
    Matcher m = p.matcher(s);
    List<String> matches = new ArrayList<String>();

    while (m.find()){
        matches.add(m.group());
    }

    System.out.println(matches);
}
于 2013-04-03T18:58:22.093 に答える
0

または、Java が :) でなければならない場合は、"\\s*\"\\s*,\\s*\"" で分割し、必要に応じて最初のフィールドの先頭と末尾に " を追加できます\s を入れたのは、空白区切りもあることがわかったからです - 15",blank"(small

于 2013-04-03T18:56:54.930 に答える
0
(\(.+?\)|\w+)

上記のコードは以下の結果と一致します。これにより、他の投稿されたものよりも柔軟なソリューションが可能になります。正規表現の構文は、このページの別の回答にあります。代わりにこの正規表現を使用してください

デスク
12
15
(小、中、大)
于 2013-04-15T00:36:48.890 に答える