-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 个或多个空格”。这是一个正则表达式(点击这里了解更多)

例如,[abc]+将匹配aaaacbacbabcbab或一个或多个字母ab和的任意组合c。意思是“这里的[]东西之一”,+意思是“一个或多个”。

更多示例:

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()将正则表达式作为参数。而这个写得不好,可能是:

" +"

这是一个匹配一个或多个空格的正则表达式。

这记录在 Javadoc 中

于 2013-01-21T02:35:09.987 回答
0

在这种情况下,您的问题表明正则表达式中需要一个空格。但是您的意图似乎是捕获one or more spaces

尽管您" +"通常可以为此写作"\n""\t"但也考虑了准确性。因此,您可以使用以下表达式:

"\s+"

在 Java 中表示为:

"\\s+"

以避免编译器错误。

于 2013-01-21T03:02:41.727 回答