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(‘.)
(假设它们确实是字符串中的最后一个
和
)。请注意,使用代码格式会显示双反斜杠。