-3

我有一个文本文件,其值的格式为:


[id1] text1

[id2] text2

...

我想知道是否有人可以告诉我如何读取这个文本文件并将其写入 java 中的 hashmap。任何指针表示赞赏。

编辑:是的。我还没试过。到目前为止,我刚刚能够从文件中读取条款并将其打印在文本文件中。我只是在看指针。谢谢。

4

2 回答 2

0

您可以阅读每一行并使用正则表达式,例如:

"\\[(.*?)\\]\\s*(.*)"

然后第一组将包含 ID,第二组将包含值。

我不会给出代码,因为您甚至还没有真正尝试过任何东西,但是您可以查看PatternMatcher类。(这两个类的名称是链接)

正则表达式的解释:

\\[   - open bracket (escaped)
(.*?) - capturing stuff inside the brackets
\\]   - close bracket
\\s*  - whitespace
(.*)  - everything after that (the data)
于 2013-02-03T23:39:34.107 回答
0

如果您的文本文件小到可以保存在对象中(例如 hashmap),您可以保存。或者您必须考虑其他解决方案。例如,您有一个 20GiB 的文本文件。

您可以通过以下方式拆分您阅读的行:

String[] arr = line.split("(?<=])\\s+", 2)

然后你把它放在你的HashMap(比如yourMap)中

yourMap.put(arr[0], arr[1])

我在这里做了一个小例子:

final String a = "[001] text here";
    final String b = "[001] text [tricky] here";
    final String c = "[0 0 1] text here";

    final String regex = "(?<=])\\s+";

    // if you want to test it, you would see key/value are correctly splited
    System.out.println(Arrays.toString(a.split(regex, 2)));
    System.out.println(Arrays.toString(b.split(regex, 2)));
    System.out.println(Arrays.toString(c.split(regex, 2)));

//--------------------------------------    

//here is the part to put them into your file
    HashMap<String,String> yourMap = new HashMap<String,String>();
    String[] array = null;
    //for each line from that file {
    array = line.split(regex,2);
    yourMap.put(array[0], array[1]);
    //}for loop ends
于 2013-02-04T00:16:38.850 回答