Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么在一个期间拆分需要双斜杠?_Java_Split - Fatal编程技术网

Java 为什么在一个期间拆分需要双斜杠?

Java 为什么在一个期间拆分需要双斜杠?,java,split,Java,Split,我有一个名为文件名的字符串: filename = "z_cams_c_ecmf_20170217000000_prod_fc_pl_015_aermr04.nc"; 当我尝试拆分文件名以获取变量名aermr04.nc时,我尝试了以下操作: String varibleName = filename.split("_")[9].split(".")[0]; 上面的代码行抛出一个索引outofboundsexception 为什么? 我可以通过使用以下工具来完成两项工作: String var

我有一个名为
文件名的
字符串

filename = "z_cams_c_ecmf_20170217000000_prod_fc_pl_015_aermr04.nc";
当我尝试拆分
文件名
以获取变量名
aermr04.nc
时,我尝试了以下操作:

String varibleName = filename.split("_")[9].split(".")[0];
上面的代码行抛出一个
索引outofboundsexception

为什么?

我可以通过使用以下工具来完成两项工作:

String varibleName = filename.split("_")[9].split("\\.")[0];
然而,我不得不摆弄这些琐碎的工作,这似乎相当愚蠢


知道第二个例子为什么有效吗?这种语法背后的原因是什么?

.split()
的参数视为正则表达式<代码>>“
作为正则表达式匹配所有内容


要匹配句点,您需要将
正则表达式转义为
”\\。

,因为在正则表达式中,句点
表示“任何字符”。因此,对于文字句点,需要对其进行转义(即前面有反斜杠)。但是,由于字符串中的反斜杠“\”需要转义,因此它变成了
“\\”
@yshavit Ha,确实如此。让我来研究一下:)请注意,您可以在不使用正则表达式或创建所有不必要的字符串和数组的情况下,使用
String varibleName=filename.substring(filename.lastIndexOf(“”),filename.lastIndexOf(‘.)
(假设它们确实是字符串中的最后一个
)。请注意,使用代码格式会显示双反斜杠。