3

Javaで「.equal」を使用してテキストファイルから文字列を検索して読み取ろうとしています。代わりに「.contain」を使用してこれを簡単に実行できることはわかっていますが、次のような行を見つけて読み取る方法があるかどうかを知りたいだけです。

たとえば、テキストファイルに次のデータがあります。

ID1   123   123
ID2   125   136

String ID="ID1"; 
while ((ss = buffered_reader.readLine()) != null){
if (ss.equals(ID+[anything])){do something} } 

「ID」だけを入力しても結果が出ないようにするためです。それで、正規表現や何かを助けることができるような方法はありますか?

明確化:

IDに完全に一致するものを見つけたいのですが、次に例を示します。

ID1を入力すると、プログラムは次のように表示します。IDだけを入力する場合はtrueですがfalse

.containを使用すると、プログラムはID1またはID2という単語を検出し、それらに「ID」が含まれているため、常に真の値を返します。

今、私は.eqaualを使用して、完全に一致するものとそれに続くものを見つけたいと思います

4

4 に答える 4

4

これを試して:

String ID="ID1"; 
while ((ss = buffered_reader.readLine()) != null) {
    if (ss.matches(ID+".*")){do something} }
}

.*は、空のシーケンスであっても、任意の文字シーケンスを意味します。したがって、IDが「ID1」の場合string、ID1 で始まるすべてのものと一致します。

于 2012-06-19T15:10:50.923 に答える
2

次のような正規表現:

(ID\d+)\s+(\d+)\s+(\d+)

対象の値を含む 3 つのグループをキャプチャできます。たとえば、この入力の場合:

ID1   123   123

グループ 1 には、ID1グループ twp には、123および123

于 2012-06-19T15:11:05.013 に答える
2

この正規表現を試してください:

ID.+

これは、文字列に「ID」部分文字列と少なくとも 1 文字が含まれている場合にのみ一致します。

于 2012-06-19T15:07:24.650 に答える
0

次のように、行の長さをテストすることもできます(正規表現よりも少ないコードが移動されます)。

while ((ss = buffered_reader.readLine()) != null) {
   if (ss.length()>3) {
       // Do your job
   }
}
于 2012-06-19T15:29:09.747 に答える