为了账号安全,请及时绑定邮箱和手机立即绑定

当使用 java.util.Scanner 从文件中读取字符串并使用换行符作为分隔符时

当使用 java.util.Scanner 从文件中读取字符串并使用换行符作为分隔符时

喵喔喔 2023-04-13 17:10:48
我尝试使用java.util.Scanner. 当我尝试用作\n定界符时,当我尝试向它们添加更多文本时,生成的字符串会做出奇怪的反应。我有一个名为“test.txt”的文件并尝试从中读取数据。然后我想向每个字符串添加更多文本,类似于打印方式Hello World!:String helloWorld = "Hello "+"World!"; System.out.println(helloWorld);.我尝试将数据与 结合起来+,我尝试过+=,我尝试过String.concat(),这以前对我有用,而且通常仍然有效。我还尝试使用不同的定界符,或者根本不使用定界符,这两种方法都按我的预期工作,但我需要在换行符处分隔字符串。最小可重现示例的文件test.txt包含以下文本(每行末尾有一个空格):零:一:二:三:void minimalReproducibleExample() throws Exception {  //May throw an exception if the test.txt file can't be found    String[] data = new String[4];    java.io.File file = new java.io.File("test.txt");    java.util.Scanner scanner = new java.util.Scanner(file).useDelimiter("\n");    for (int i=0;i<4;i++) {        data[i] = scanner.next();     //read the next line        data[i] += i;                 //add a number at the end of the String        System.out.println(data[i]);  //print the String with the number    }    scanner.close();}我希望这段代码打印出这些行:零:0一:1二:2三:3我得到这个输出:0ero:1ne:2wo:三: 3\n为什么在用作定界符时没有得到预期的输出?
查看完整描述

2 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

test.txt有可能使用 Windows行尾表示 \r\n,这导致回车符\rString在读取后仍然存在。

确保test.txt使用\nas line delimtier 或\r\nScanner.useDelimiter().


查看完整回答
反对 回复 2023-04-13
?
UYOU

TA贡献1878条经验 获得超4个赞

问题很可能是错误的定界符。如果您使用 Windows 10,新的行分隔符是\r\n

只是为了独立于平台使用System.getProperty("line.separator")而不是硬编码\n


查看完整回答
反对 回复 2023-04-13
  • 2 回答
  • 0 关注
  • 168 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信