如何通过制表符和换行符拆分字符串?

时间:2013-12-17 14:59:44

标签: java tokenize tab-delimited

我有一个制表符分隔的文件,我希望按制表符和换行符拆分,其中制表符表示字段之间的分隔符,换行符表示应创建的新对象。该文件可能如下所示:

Peter\tpeter@example.com\tpeterpassword\nBob\tbob@bobby.com\tbobbypassword\n...

其中\t是标签,\n是换行符。

我想启用上传此文件到我的程序,该程序为文件中的每一行创建一个新用户,并在该行上显示字段。但是我如何使用两个标记 - tab和换行符?我的代码如下所示:

String everything = "";
BufferedReader br = null;
try {
    br = new BufferedReader(new InputStreamReader(file.getInputStream()));
    StringBuilder sb = new StringBuilder();
    String line = br.readLine();

    while (line != null) {

       //now create object according to the string
       StringTokenizer st = new StringTokenizer(line , "\t");    
       String name = st.nextToken();
       String email = st.nextToken();
       String password = st.nextToken();
       User.createNewUser(name, email, password);

        sb.append(line);
        sb.append('\n');
        line = br.readLine();
    }
    everything = sb.toString();
    br.close();
} catch (IOException e) {
    e.printStackTrace();
}
System.out.println("Everything: " + everything);

代码会像上面那样工作吗?

1 个答案:

答案 0 :(得分:2)

我会为每一行做String.split("\\n")。然后,您将获得每个用户所需的所有信息。做另一个String.split("\\t")并使用结果数组构造您的对象。

来自Java Doc:

StringTokenizer是一个遗留类,出于兼容性原因而保留,尽管在新代码中不鼓励使用它。建议任何寻求此功能的人都使用String的split方法或java.util.regex包。

http://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html