如何解析字符串并以键值形式提取数据?

时间:2017-01-12 13:44:26

标签: java javamail

我需要解析从电子邮件内容创建的字符串并提取数据。电子邮件的结构如下所示:

Some email text..............
//these properties I have to extract
Name: SomeName
Surname: SomeSurname
Email: SomeEmail
Adress: some adress
etc...
Some email text................

您是否了解一些技巧,如何解析此字符串并提取数据? 我找到了一些方法,但它有缺陷,因为当值有空格时它不起作用,就像上面的Adress一样。

    String searchText = "Name:";
    int lastIndexOf = content.lastIndexOf(searchText);
    String substring = content.substring( 1 + lastIndexOf + searchText.length());
    String substring1 = substring.substring(0, substring.indexOf(" "));

1 个答案:

答案 0 :(得分:0)

以下是解决方案的代码:

    FileReader file;
    String sCurrentLine;
    String searchString = "Name";
    try {
        file = new FileReader("D:\\junk\\Sample.txt");

        BufferedReader br = new BufferedReader(file);

        br = new BufferedReader(new FileReader("D:\\junk\\Sample.txt"));

        while ((sCurrentLine = br.readLine()) != null) {

            String splitString = sCurrentLine.substring(0, sCurrentLine.indexOf(':'));
            splitString = splitString.replace(" ", "");
            if (splitString.equalsIgnoreCase(searchString)) {
                System.out.println(sCurrentLine.substring(sCurrentLine.indexOf(':')).replace(":",""));
                break;
            }

        }

    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

让我解释一下代码: 这里我们从文本文件中获取输入。文本文件包含key-value映射 在我们阅读该文件后,我们会将其解析为String sCurrentLine

然后,我们首先从':'拆分字符串,然后我们删除所有空格,然后将分割字符串存储在splitString中,这将成为没有空格的密钥。

然后我们将splitStringsearchString进行匹配。如果匹配,那么我们打印在':'之后的字符串部分。

希望它有所帮助!