1

「sentence1」、「sentence2」、「sentence3」という二重引用符で囲まれた文を含むテキスト csv ファイルを読み取る単純な Java コードがあります。私はこれらの文のいくつかを読みたいです (例えば、文 1 と 3)。バッファ リーダーを作成してreadLine()使用しました。tokens = fileLine.split(",");ここで、tokens は文字列の配列です。

配列インデックスを , として使用して、興味のある文にアクセスしましtokens[0]tokens[3]。問題は、二重引用符なしの文だけが欲しいということです。しかし、私のプログラムは「」で文を保存しました。「」なしで文を保存できるように、解析手法を改善するにはどうすればよいですか??

4

6 に答える 6

3

どうですかString#replaceAll:

theSentence = theSentence.replaceAll("\"", "");

新しいJavaバージョンでは、Java 5からだと思いますが、次のものも使用できますString#replace(CharSequence,CharSequence)

theSentence = theSentence.replace("\"", "");

そして、正規表現のオーバーヘッドを回避します

于 2012-06-21T15:05:59.810 に答える
0

すぐに分割するのではなく、何よりも興味深い解決策として、これを行ってみませんか?

String inputFromCSV; // This would have the value of what you read from the CSV.
inputFromCSV=inputFromCSV.substring(1,sentence.length()-1); 
String[] tokens = inputFromCSV.split("\",\""); // Essentially ","

実際に見てみると、それほど悪くはなく、ファイルが同じフォーマットを維持している限り機能します。

于 2012-06-21T15:13:40.773 に答える
0

次のことができます。

s = s.substring(1, s.length()-1);
tokens = s.split("\",\"");

"Hello, world","second sentence" 実装は入力行を配列として解析することに注意してください

"Hello
world"
"second sentence"

上記のコードは、行に (エスケープされた) 引用符自体が含まれていない場合にのみ機能します。

于 2012-06-21T15:08:26.383 に答える
0

メソッドを使用できますString.replaceAll(regex, replacement)

例えば:

String s = "hello world";
s = s.replaceAll("o","X");
//s now equals "hellX wXrld"

あなたの場合、正規表現を次のようにしたいでしょう: "\"" そしてあなたの置換は: ""

于 2012-06-21T15:09:29.000 に答える
0

文字列の最初と最後だけを削除したい場合は"、次の方法でも実行できます。

String sentence="\"my sentence\"";
System.out.println(sentence);//out->"my sentence"

sentence = sentence.substring(1,sentence.length()-1);   
System.out.println(sentence);//out->my sentence
于 2012-06-21T15:10:50.747 に答える