0

下面的这个文本文件是什么是 Person 对象的集合...该 person 对象具有姓名和电话号码

jill nim # 9090092323
阿拉丁 # 4243535345
Defy 鸭 # 4354656575

我正在尝试恢复此文件以供程序使用,但我不知道如何拆分这些字符串,以便我可以传递给 person 实例

Person s = new Person( String Name, String phonenumber);

我如何通过这些姓名和号码来创建新的人实例。

   public void restore(String fileName) {
       // TODO : implement this method.
       // restore bst from a file, if file exists.
       // do nothing, otherwise.
       File fichier = new File(fileName);
            if (fichier.exists())

                try {
                    Scanner n = new Scanner(new File(fileName));

                        while(n.hasNextLine()){     
                            Person s = new Person( n.nextLine(), n.next(pattern));
                        }       
                    } catch (FileNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
4

4 回答 4

3

String 类中有一个split方法。

nextLine()用“#”分割你,即nextLine().split("#")得到一个字符串数组,其中你array[0]的名字和array[1]电话号码。然后你可以调用你的构造函数new Person(array[0].trim(), array[1].trim())(修剪是为了在拆分后摆脱任何额外的空格)

于 2013-11-11T03:05:25.917 回答
2

用户StringTokenizer适合您的情况,例如:

String foo = "foo # 1234";

StringTokenizer sr =  new StringTokenizer(foo,"#");

while(sr.hasMoreElements())
{
System.out.println(sr.nextElement());
}
于 2013-11-11T03:18:30.623 回答
2

您可以使用split(),但在这种情况下完全没有必要。在你的情况下,你可以使用.substring()and indexOf(),你会这样做:

String fromFile = "jill nim # 9090092323";
Person s = new Person(fromFile.substring(0, fromFile.indexOf('#') -1), 
                      fromFile.substring(fromfile.indexOf('#') + 2);

using.split()不仅创建了一个数组,还创建了一个Pattern对象,这两者都是不必要的。

于 2013-11-11T03:05:40.760 回答
1

只需使用split("#");

String line = line.nextLine();

String[] tokens = line.split("#");

String name = tokens[0].trim();

String phone = tokens[1].trim();

Person s = new Person(name, phone);
于 2013-11-11T03:06:41.827 回答