当前位置: 首页 > 面试题库 >

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

太叔富
2023-03-14
问题内容

我有一个超过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,如果这是个明显的问题,我很抱歉。 我正在尝试逐个字符读取字符串以创建树节点。例如,输入,节点为 我注意到了 我可以用一个循环来获得所有的角色吗?就像 我试过了,但不管用。 我该怎么做? 非常感谢你的帮助。 扫描器读取器=新扫描器(System.in);System.out.println(“将节点输入为大写字母,不带空格,结尾为'/'”);int i=0;char node=rea

  • 问题内容: 我尝试获取<%=和%>之间的字符串,这是我的实现: 它返回 但我的期望是: 我在哪里错了以及如何纠正它? 问题答案: 您的模式很好。但是,您不应该轻信它,应该这样做。以下代码提供了您正在寻找的输出:

  • 本文向大家介绍如何从R中的字符串中提取开头,结尾或中间字符?,包括了如何从R中的字符串中提取开头,结尾或中间字符?的使用技巧和注意事项,需要的朋友参考一下 在文本分析中,我们可能想从单个字符串或字符串向量中提取字符。可能需要使用此提取来创建一个新的字符串,其中包含一些需要进一步分析的特定单词。我们可以借助stringr包的str_sub函数来做到这一点。 示例 请看以下字符串- 加载纵梁包- 让我

  • 问题内容: 我正在寻找一种从字符串变量中提取前100个字符以放入另一个变量进行打印的方法。 是否有可以轻松做到这一点的功能? 例如: 要得到: 问题答案: 对于“ 字符串操作”,这是一个具有很多功能的页面,可能会在将来的工作中为您提供帮助。

  • 我有一个JavaScript字符串(例如),我只想从中得到。 我试过: 它仍然在警报中返回,我如何让它工作? 它需要适应任何长度数字附加在结束。

  • 问题内容: 我有一个类似的领域 我想从数据中提取。 如何使用SQL Server 2008高效地做到这一点?谢谢你 问题答案: 试试这个 退货