我试图从文件名中解析特定名称。
文件名的例子是
xs_1234323_00_32
sf_12345233_99_12
fs_01923122_12_12
我用String parsedname= child.getName().substring(4.9)
以获得1234323出的第一行的。 相反,我怎么格式化为上述3只输出中间数(两者_)? 使用的东西split
?
我试图从文件名中解析特定名称。
文件名的例子是
xs_1234323_00_32
sf_12345233_99_12
fs_01923122_12_12
我用String parsedname= child.getName().substring(4.9)
以获得1234323出的第一行的。 相反,我怎么格式化为上述3只输出中间数(两者_)? 使用的东西split
?
String [] tokens = filename.split("_");
/* xs_1234323_00_32 would be
[0]=>xs [1]=> 1234323 [2]=> 00 [3] => 32
*/
String middleNumber = tokens[2];
一行溶液
String n = str.replaceAll("\\D+(\\d+).+", "$1");
最efficent解决方案
int i = str.indexOf('_');
int j = str.indexOf('_', i + 1);
String n = str.substring(i + 1, j);
您可以尝试使用使用“_”分隔符分割。
该String.split方法拆分围绕给定的匹配此字符串;参数。 因此,使用这样的
String[] output = input.split("_");
这里output[1]
将是你想要的结果
和输入会像
String input = "xs_1234323_00_32"
我这样做:
filename.split("_", 3)[1]
的第二个参数split
指示块串应分成的最大数量,你的情况,你只需要3。这将是比使用的单参数版本更快split
,这将继续分裂的分隔符不必要的。