【问题标题】:I want to extract strings from a line我想从一行中提取字符串
【发布时间】:2018-07-01 05:59:48
【问题描述】:

以下内容在文本文件中可用。我想提取数据(姓名、年龄、工作经验、职位)。我能怎么做?我尝试使用 java stringtokenizer 和 split 函数进行提取。但无法提取数据。

Name                                     Age                   Working Experience          Position                     
John                                     23                    10                          Team Leader                          
Christian Elverdam                       27                    7                           Director                    
Niels Bye Nielsen                        59                    16                          Composer
Rajkumar Hirani                          40                    23                          Director               
Vidhu Vinod Chopra                      58                    21                          Screenplay

预期输出:

John              |23|10|Team Leader|
Christian Elverdam|27|7 |Director   |
Niels Bye Nielsen |59|16|Composer   |
Rajkumar Hirani   |40|23|Director   |
Vidhu Vinod Chopra|58|21|Screenplay |

【问题讨论】:

  • Cam 你展示了你迄今为止尝试过的东西?

标签: java arrays string


【解决方案1】:

不要使用StringTokenizer:

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

如果拆分为 2 个或更多空格,则可以使用 split()split(" {2,}")

演示

String input = "Name                                     Age                   Working Experience          Position                     \n" +
               "John                                     23                    10                          Team Leader                          \n" +
               "Christian Elverdam                       27                    7                           Director                    \n" +
               "Niels Bye Nielsen                        59                    16                          Composer\n" +
               "Rajkumar Hirani                          40                    23                          Director               \n" +
               "Vidhu Vinod Chopra                      58                    21                          Screenplay\n";

List<String[]> rows = new ArrayList<>();
try (BufferedReader in = new BufferedReader(new StringReader(input))) {
    in.readLine(); // skip header line
    for (String line; (line = in.readLine()) != null; ) {
        rows.add(line.split(" {2,}"));
    }
}
for (String[] row : rows)
    System.out.println(Arrays.toString(row));

输出

[John, 23, 10, Team Leader]
[Christian Elverdam, 27, 7, Director]
[Niels Bye Nielsen, 59, 16, Composer]
[Rajkumar Hirani, 40, 23, Director]
[Vidhu Vinod Chopra, 58, 21, Screenplay]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-26
    • 1970-01-01
    • 1970-01-01
    • 2019-08-27
    • 2015-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多