我有一个看起来像这样的文本文件
respondentid | name | email | password | michid
-------------+--------------------------------+---------------------+----------+--------
bi1004 | Malapa Bushra | bi@tmich.edu | ec59260f |
bm1252 | Peter Benjamin T | bm@tmich.edu | 266bff7c |
dg1988 | Goday Priya | dg@tmich.edu | dongara |
我只需打印出电子邮件和名称..但名称是相反的顺序,包括中间初始..我如何处理逆序和中间初始?例如我的打印输出
bi@mich.edu Bushra Malapa
bm@mich.edu Benjamin T Peter
我认为不好使用split函数并且还读入数组。你觉得怎么样?有人有经验吗?谢谢。
答案 0 :(得分:2)
这是我要做的:我会跳到第3行,然后使用split函数在每个“|”分割行并将第二个和第三个值存储为名称和电子邮件。然后我们取名字,每次有任意数量的空格时拆分它,并根据有多少部分重新排列它,可以是First Middle Last或First Last。然后我们将它与电子邮件并排打印。
Soooooooo在这里看起来像:
import java.io.*;
public class temp {
public static void main(String[] args) {
// define the path to your text file
String myFilePath = "temp.txt";
// read and parse the file
try {
BufferedReader br = new BufferedReader(new FileReader(new File(myFilePath)));
String line, name, email;
// read through the first two lines to get to the data
line = br.readLine();
line = br.readLine();
while ((line = br.readLine()) != null) {
if (line.contains("|")) {
// do line by line parsing here
line = line.trim();
// split the line
String[] parts = line.split("[|]");
// parse out the name and email
name = parts[1].trim();
email = parts[2].trim();
// rearrange the name
String[] nParts = name.split(" *");
if (nParts.length == 3) {
name = nParts[1] + " " + nParts[2] + " " + nParts[0];
} else {
name = nParts[1] + " " + nParts[0];
}
// all done now, let's print the name and email
System.out.println(email + " " + name);
}
}
br.close();
} catch (Exception e) {
System.out.println("There was an issue parsing the file.");
}
}
}
如果我们继续使用您在此处提供的示例文件来运行此操作,那么我们将获得:
bi@tmich.edu Bushra Malapa
bm@tmich.edu Benjamin T Peter
dg@tmich.edu Priya Goday
希望这对你有所帮助!我绝对鼓励你找到自己的方式来做到这一点,因为有很多不同的方法来解决问题,找到一种对你有意义的方法是很好的。另外正如所指出的那样,你绝对不应该以纯文本形式存储密码。
答案 1 :(得分:1)
既然你在征求意见......
我认为不好使用split函数并且还读入数组。你觉得怎么样?
使用split函数将行分成字段是一种可能性。另一种是使用Scanner。拆分功能也可用于将名称拆分为多个部分。
将数据读入数组是一个坏主意,因为你需要事先知道数组需要多大...而且一般来说,没有办法知道这一点。请改用List
。
@GreySwordz有一个有效的观点。对于真实应用程序来说,将密码以明文形式存储在文件中是不良做法。但我怀疑这是一个练习......文件格式已被指定为其中的一部分。