如何在Java中提取字符串的开头

问题描述

我们假设您使用Java 7,因为这是2014年。

这是一种返回a的方法List<String>其中每个元素都是一个ISDN:

private static final Pattern ISDN = Pattern.compile("ISDN=(.*)");

// ...

public List<String> getISDNsFromFile(final String fileName)
    throws IOException
{
    final Path path = Paths.get(fileName);
    final List<String> ret = new ArrayList<>();

    Matcher m;
    String line;

    try (
        final BufferedReader reader
            = Files.newBufferedReader(path, StandardCharsets.UTF_8);
    ) {
        while ((line = reader.readLine()) != null) {
            m = ISDN.matcher(line);
            if (m.matches())
                ret.add(m.group(1));
        }
    }

    return ret;
}

解决方法

我有一个超过20,000行的文本文件,我需要从中提取特定行。该程序的输出完全是空白文件。

txt文件中有20,000行,该ISDN行不断重复很多时间,每个时间都有不同的值。我的文本文件包含以下数据。

RecordType=0(MOC) 
sequenceNumber=456456456
callingIMSI=73454353911
callingIMEI=85346344
callingNumber
AddInd=H45345'1
NumPlan=H34634'2
ISDN=94634564366 // Need to extract this "ISDN" line only

public String readTextFile(String fileName) {
    String returnValue = "";
    FileReader file = null;
    String line = "";
    String line2 = "";

    try {
        file = new FileReader(fileName);
        BufferedReader reader = new BufferedReader(file);
        while ((line = reader.readLine()) != null) {               
            // extract logic starts here
            if (line.startsWith("ISDN") == true) {
                System.out.println("hello");
                returnValue += line + "\n";
            }     
        }
    } catch (FileNotFoundException e) {
        throw new RuntimeException("File not found");
    } finally {
        if (file != null) {
            try {
                file.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    return returnValue;
}