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

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

}

回答:

我们假设您使用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;

}

以上是 如何在Java中提取字符串的开头 的全部内容, 来源链接: utcz.com/qa/408954.html

回到顶部