我有一个CSV文件,我想使用Java代码提取部分文件名。
例如,如果文件名是 - > StudentInfo_Mike_Brown_Log.csv
我希望能够提取文件名中前两个_
之间的内容。因此,在这种情况下,我将提取Mike
到目前为止,我正在做以下事情:
String fileName = "C:\\User\\StudentInfo_Mike_Brown_Log.csv";
File file = new File(fileName);
String extractedInfo= fileName.substring(fileName.indexOf("_"), fileName.indexOf("."));
System.out.println(extractedInfo);
此代码目前为我_Mike_Brown_brown_Log
但我只打印Mike
。
答案 0 :(得分:4)
您可以将split与Regex一起使用,将String拆分为子字符串。
以下是一个例子:
final String fileName = "C:\\User\\StudentInfo_Mike_Brown_Log.csv";
final String[] split = fileName.split("_");
System.out.println(split[1]);
答案 1 :(得分:4)
试试这个:
int indexOfFirstUnderscore = fileName.indexOf("_");
int indexOfSecondUnderscore = fileName.indexOf("_", indexOfFirstUnderscore+2 );
String extractedInfo= fileName.substring(indexOfFirstUnderscore+1 , indexOfSecondUnderscore );
System.out.println(extractedInfo);
答案 2 :(得分:1)
您可以使用getName()
对象中的File
方法返回文件名(带扩展名但没有尾随路径),而不是像@Chasmo那样提到split("_")
E.g。
File input = new File(file);
String fileName = input.getName();
String[] partsOfName = fileName.split("_");
System.out.println(Arrays.toString(partsOfName));
答案 3 :(得分:0)
除了lastIndexOf()
:
indexOf()
String fileName = "C:\\User\\StudentInfo_Mike_Brown_Log.csv";
File file = new File(fileName);
filename = file.getName();
String extractedInfo= fileName.substring(
fileName.indexOf("_"),
fileName.lastIndexOf("_"));
System.out.println(extractedInfo);
首先调用file.getName()
非常重要,因此这种方法不会与文件路径中的下划线“_”字符混淆。
希望这有帮助。
答案 4 :(得分:0)
解决了之前的回答:
String fileName = "C:\\User\\StudentInfo_Mike_Brown_Log.csv";
File file = new File(fileName);
fileName = file.getName();
System.out.println(fileName.split("\\.")[0]);
答案 5 :(得分:0)
使用String类的indexOf和substring方法:
String fileName = "C:\\User\\StudentInfo_Mike_Brown_Log.csv";
int indexOfUnderScore = fileName.indexOf("_");
int indexOfSecondUnderScore = fileName.indexOf("_",
indexOfUnderScore + 1);
if (indexOfUnderScore < 0 || indexOfSecondUnderScore < 0) {
throw new IllegalArgumentException(
"string is not of the form string1_string2_ " + fileName);
}
System.out.println(fileName.substring(indexOfUnderScore + 1,
indexOfSecondUnderScore));