扫描程序无法在StringBuilder上运行

Tar*_*riq 0 java

我写了一个程序,它必须从文件中获取输入并从中提取文本,同时将其内容保存到数组中.我的文本文件内容是:

There is some!text.written%in
the FILE[That]=Have+to`be==separated????
Run Code Online (Sandbox Code Playgroud)

我试图编码的是:

public static void main(String[] args) throws FileNotFoundException, IOException {
    BufferedReader file = new BufferedReader(new FileReader("mfile.txt"));
    List<String> list = new ArrayList();
    String str;
    StringBuilder filedata = new StringBuilder();
    Scanner toknizer = new Scanner(filedata.toString());
    while((str=file.readLine())!=null){
        filedata.append(str);
    }
    toknizer.useDelimiter("[^a-z]");
    while(toknizer.hasNext()){
        list.add(toknizer.next());
    }
    System.out.println(list);
}
Run Code Online (Sandbox Code Playgroud)

此时我只想提取用小字母书写的文本.但该程序打印出一个空列表.调试显示toknizer.hasNext()正在返回false while(toknizer.hasNext()).怎么了?我使用错误的正则表达式吗?我[^a-z]这里得到了使用的想法.

SLa*_*aks 5

Scanner toknizer = new Scanner(filedata.toString());
Run Code Online (Sandbox Code Playgroud)

你刚刚创建了Scanner一个空字符串.
那不会有任何代币.

字符串是不可改变的; 附加到StringBuilder后者不会影响String您传递给的现有实例Scanner.