Java中的useDelimiter()错误
这个问题在这里已经有了答案:
这是因为useDelimiter
接受一个模式。 点.
是用于表示“任何字符”的正则表达式的特殊字符。 只需用一个反斜杠来避开这段时间,它就可以工作:
Scanner file = new Scanner(new File("sample.txt")).useDelimiter(".");
编辑
问题是,你正在使用hasNextLine()
和nextLine()
,它将无法正常工作.
分隔符。 这是一个可以让你得到你想要的结果的实例:
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Test {
final static String path = Test.class.getResource("sample.txt").getPath();
public static void main(String[] args) throws IOException {
Scanner file = new Scanner(new File(path)).useDelimiter(".");
List<String> phrases = new ArrayList<String>();
while (file.hasNext()) {
phrases.add(file.next().trim().replace("rn", " ")); // remove new lines
}
file.close();
for (String phrase : phrases) {
System.out.println(phrase);
}
}
}
通过使用hasNext()
和next()
,我们可以使用我们的新功能.
分隔符而不是默认的新行分隔符。 因为我们这样做了,所以我们仍然file.next().trim().replace("rn", " ")
你的段落散布的新线条,这就是为什么我们需要删除file.next().trim().replace("rn", " ")
清理尾随空白并删除新的换行符。
输入:
I love you. You
love me. He loves
her. She loves him.
输出:
I love you
You love me
He loves her
She loves him
链接地址: http://www.djcxy.com/p/78341.html