我在将一个方法实现为输出的一些代码时遇到了麻烦。基本上,我创建了一个名为getName
的方法,它将人名分配给唯一的数字。然后,我得到一个包含聊天记录的输入文件。在我过滤掉我需要的线后,我需要它能够显示人的名字而不是数字。这是我方法的一小部分:
public static String getName(int id) {
// External identifiers specified
switch (id) {
case 5644:
return "Steve Jobs";
case 5640:
return "John Smith";
case 5663:
return "Johnny Appleseed";
以下是获取输入的代码,并显示我需要的输出:
try
{
// assigns the input file to a filereader object
BufferedReader infile = new BufferedReader(new FileReader(log));
sc = new Scanner(log);
while(sc.hasNext())
{
String line=sc.nextLine();
if(line.contains("LANTALK")){
Pattern pattern = Pattern.compile("
(\\d{2}:\\d{2}:\\d{2}\\.\\d{3})\\s\\[D\\].+<MBXID>(\\d+)
<\\/MBXID><MBXTO>(\\d+)<\\/MBXTO>.+<MSGTEXT>(.+)
<\\/MSGTEXT>", Pattern.MULTILINE + Pattern.DOTALL);
// Multiline is used to capture the LANMSG more than
once, and Dotall is used to make the '.' term in regex
also match the newline in the input
Matcher matcher = pattern.matcher(line);
while (matcher.find())
{
String output = matcher.group(1) + " [" +
matcher.group(2) + "] to [" + matcher.group(3) + "] "
+ matcher.group(4);
System.out.println(output);
System.out.println();
}
} // End of if
} // End of while
每行输出如下所示:
14:49:28.817 [1095] to [5607] I could poke around with it a bit and see what's available.
我只需要数字1095
和5607
来显示我在方法中指定的人名。所以我问我如何在我的代码中实现它?是否有一种特殊的方式我需要调用该方法才能识别数字?我是否使用某种正则表达式或XML?谢谢你的帮助!
答案 0 :(得分:0)
您应该使用词典
使用字典的好处:
<强>链接:强>