繁体   English   中英

扫描仪的next()-如何替换换行符[java]

[英]Scanner next() - how to replace line breaks [java]

我撞墙了!

在阅读了StackOverflow上许多有趣的线程之后,我尝试了很多不同的解决方案,但是似乎没有任何效果。

假设我有一个.txt文件,我想在其中将换行符替换为“ XXX”。 我使用一种计数方法来计算文档中的行数。

Scanner reader = new Scanner("document.txt);

String [] textToArray = new String[count];

for(int i = 0; textToArray.length; i++){
String text = reader.nextLine();

text = text.replaceAll("\n", "XXX");
textToArray[i] = text;

}

然后,我为每个循环使用a打印出文本。 输出仍然与原始输出相同。

我也尝试过“ \\ n”,“ \\ r”,“ \\ r”甚至“ \\ r \\ n”。

阅读文档,即nextLine()的javadoc:

使该扫描仪前进到当前行之外,并返回被跳过的输入。 此方法返回当前行的其余部分,但不包括end处的任何行分隔符 该位置设置为下一行的开始。

因此,您正在阅读每一行的文本,但是看不到\\r和/或\\n字符。

由于您要将每一行读入数组,因此您应该将XXX附加到每个值之后:

for (int i = 0; textToArray.length; i++) {
    String text = reader.nextLine();
    textToArray[i] = text + "XXX";
}

无关

我还建议您读List而不是数组。 之后,您始终可以转换为数组。

我希望您记得关闭Scanner ,并且显示了模拟代码,因为new Scanner("document.txt")将扫描文本document.txt ,而不是该名称的文件内容。

String[] textToArray;
try (Scanner reader = new Scanner(new File("document.txt"))) {
    List<String> textList = new ArrayList<>();
    for (String text; (text = reader.nextLine()) != null; ) {
        textList.add(text + "XXX");
    }
    textToArray = textList.toArray(new String[textList.size()]);
}
String text = reader.nextLine();

text = text.replaceAll("\n", "XXX");

当您读一行时,将没有换行触发所有替换。 您将拥有此时在文本中阅读的任何行。

尝试构建字符串或将全文放在字符串中,然后替换新行。

如果我理解您的问题,您想在给出的示例中将“ \\ n”替换为XXX吗? 像这样将整个文件读为一个字符串会更加容易:

String file = new String(Files.readAllBytes(Paths.get(fileName)), StandardCharsets.UTF_8);

然后您可以使用内置函数,例如:

String replace(char oldChar, char newChar);

这将返回一个包含文件的新字符串,所有空格都用XXX代替。 或您想在此处使用的任何字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM