如何在Java中提取CSV文件的部分文件名

时间:2014-12-15 12:08:59

标签: java csv

我有一个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

6 个答案:

答案 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类的indexOfsubstring方法:

    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));