1

我正在尝试从文件名中解析特定名称。

文件名的例子是

xs_1234323_00_32

sf_12345233_99_12

fs_01923122_12_12

我曾经String parsedname= child.getName().substring(4.9)将 1234323 从第一行中取出。相反,如何为上述 3 设置格式以仅输出中间数字(在两个 _ 之间)?使用的东西split

4

5 回答 5

2

一条线解决方案

String n = str.replaceAll("\\D+(\\d+).+", "$1");

最有效的解决方案

    int i  = str.indexOf('_');
    int j = str.indexOf('_', i + 1);
    String n = str.substring(i + 1, j);
于 2013-06-11T15:54:08.710 回答
1
String [] tokens = filename.split("_");
/*  xs_1234323_00_32 would be
      [0]=>xs   [1]=> 1234323   [2]=> 00  [3] => 32
*/
String middleNumber = tokens[2];
于 2013-06-11T15:48:41.467 回答
0

String.split方法围绕给定 ; 参数的匹配拆分此字符串。所以像这样使用

String[] output = input.split("_");

output[1]将是您想要的结果

和输入会像

String input = "xs_1234323_00_32"
于 2013-06-11T15:52:05.330 回答
0

我会这样做:

filename.split("_", 3)[1]

的第二个参数split表示字符串应该被分割成的最大片段数,在你的情况下你只需要3个。这将比使用单参数版本更快split,它将继续在分隔符上不必要地分割。

于 2013-06-11T15:50:28.627 回答
0

您可以尝试使用“_”分隔符进行拆分。

于 2013-06-11T15:51:35.160 回答