如何在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