【问题标题】:How to split a string by tabs and newlines?如何通过制表符和换行符拆分字符串?
【发布时间】:2013-12-17 14:59:44
【问题描述】:

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

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

其中\t 是一个制表符,\n 是一个换行符。

我想启用将此文件上传到我的程序,该程序为文件中的每一行以及该行上的字段创建一个新用户。但是我怎样才能使用两个标记 - 制表符和换行符?我的代码如下所示:

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);

上面的代码可以工作吗?

【问题讨论】:

  • 测试一下就知道了。
  • 并且仅供参考:StringTokenizer 可以采用多个令牌。
  • 你为什么不试试,让我们知道!
  • 您也可以根据需要将其拆分为数组并使用正则表达式进行拆分。 String[]tokens = something.split("\n|\\\t");

标签: java tokenize csv


【解决方案1】:

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

来自 Java 文档:

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

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

【讨论】:

    猜你喜欢
    • 2014-02-26
    • 1970-01-01
    • 2012-11-08
    • 2013-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    相关资源
    最近更新 更多