![](/img/trans.png)
[英]Java: How to check for next ints without going to the next line (Scanner)
[英]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.