我正在尝试从文件名中解析特定名称。
文件名的例子是
xs_1234323_00_32
sf_12345233_99_12
fs_01923122_12_12
我曾经String parsedname= child.getName().substring(4.9)
将 1234323 从第一行中取出。相反,如何为上述 3 设置格式以仅输出中间数字(在两个 _ 之间)?使用的东西split
?
一条线解决方案
String n = str.replaceAll("\\D+(\\d+).+", "$1");
最有效的解决方案
int i = str.indexOf('_');
int j = str.indexOf('_', i + 1);
String n = str.substring(i + 1, j);
String [] tokens = filename.split("_");
/* xs_1234323_00_32 would be
[0]=>xs [1]=> 1234323 [2]=> 00 [3] => 32
*/
String middleNumber = tokens[2];
String.split方法围绕给定 ; 参数的匹配拆分此字符串。所以像这样使用
String[] output = input.split("_");
这output[1]
将是您想要的结果
和输入会像
String input = "xs_1234323_00_32"
我会这样做:
filename.split("_", 3)[1]
的第二个参数split
表示字符串应该被分割成的最大片段数,在你的情况下你只需要3个。这将比使用单参数版本更快split
,它将继续在分隔符上不必要地分割。
您可以尝试使用“_”分隔符进行拆分。