-1

次のような行を含むtxtファイルがある場合はこんにちは。

newmtl material0
Ka 1.000000 1.000000 1.000000
Kd 1.000000 1.000000 1.000000
Ks 0.000000 0.000000 0.000000
Tr 1.000000

そしてそれは次のように分割されています:

if(line.startsWith("Ks")){
String[] str=line.split("[ ]+");}

戻ります

0.000000 
0.000000 
0.000000

なぜ「[]+」はスペースで分割することを意味するのですか?これが参照されている場所が見つかりませんでした。

4

3 に答える 3

1

[ ]括弧内のスペースです。を付ける+と「1個以上のスペース」という意味になります。これは正規表現です (詳細については、ここをクリックしてください)

たとえば、 、、、または 、 、 の 1 つ以上の文字の任意の組み合わせと[abc]+一致します。は「ここにあるものの 1 つ」を意味し、「1 つまたは複数」を意味します。aaaacbacbabcbababc[]+

その他の例:

f[ao]o      will match "foo" and "fao"
ya+y        will match "yay" or "yaaaaay" or "yaaaaaaaaaaaay"
hooray[!1]+ will match "hooray!!!!" or "hooray!!1!!1!!!!1" or "hooray!111"
于 2013-01-21T02:34:41.990 に答える
0

String.split()引数として正規表現を取ります。そして、これは下手に書かれています。

" +"

これは、1 つ以上のスペースに一致する正規表現です。

これはJavadoc に記載されています。

于 2013-01-21T02:35:09.987 に答える
0

この場合、あなたの質問は、正規表現にスペースが必要であることを示唆しています。しかし、あなたの意図のように見えるのは、one or more spaces.

" +"これについては一般的に"\n"書くことができますが"\t"、正確さについても考慮されています。したがって、次の式を使用できます。

"\s+"

Java では次のように表されます。

"\\s+"

コンパイル エラーを回避するため。

于 2013-01-21T03:02:41.727 に答える