这里有很多帖子,每个人都建议更改文本文件内容。
我的要求是,我正在解析一个c ++源文件。在解析期间,当我在结尾处找到反斜杠时,我可能需要将多行合并在一起。
例:
char line [100] =“你好加入多行。\
哦,不要让我编辑CPP源文件。“;
如何从xyz.cpp文件中读取此文本,并确定该行末尾有反斜杠。 我使用FileInputReader逐行读取,但是当我在java中获取该行时,反斜杠就丢失了。
我希望您不要建议我更改我的CPP源代码以替换\ with \
提前致谢。
答案 0 :(得分:0)
反斜杠是Java中的转义字符。因此,如果您想要匹配真实的反斜杠 - \
,那么您必须寻找\\
。
您可以使用contains()
或indexOf()
作为字符串文字。
或按字符阅读并检查条件:
if (c == '\\')
希望这有帮助!
答案 1 :(得分:0)
在最简单的级别上,您可以按新行(data.split('\n')
data
为String
)拆分文件数据,然后检查它是否以反斜杠结尾({{1}其中line.endsWith('\\')
是line
)
答案 2 :(得分:0)
以下代码加载文件并打印每一行
import java.io.File;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class Test {
public static void main(String args[]) throws Exception{
Scanner scan = new Scanner(new File("file.txt"));
scan.useDelimiter("\\Z");
String content = scan.next();
String[] lines = content.split("\n");
for (String value : lines) {
System.out.println(value);
}
}
}
我创建了一个包含以下行
的文件“file.txt”line 1
line 2\
line 2cnt
line 3
代码将输出
line 1
line 2\
line 2cnt
line 3
要加入这些行,您可以运行以下代码
public static void main(String args[]) throws Exception{
Scanner scan = new Scanner(new File("file.txt"));
scan.useDelimiter("\\Z");
String content = scan.next();
String[] lines = content.split("\n");
for (String value : lines) {
if (value.endsWith("\\")) {
value = value.substring(0, value.length()-1);
System.out.print(value);
} else {
System.out.println(value);
}
}
}
将输出
line 1
line 2line 2cnt
line 3
根据您的评论编辑:
public static void main(String args[]) throws Exception {
FileInputStream fileInputStream = new FileInputStream("file.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(fileInputStream));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
}
输出
line 1
line 2\
line 2cnt
line 3
和
public static void main(String args[]) throws Exception {
FileInputStream fileInputStream = new FileInputStream("file.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(fileInputStream));
String line;
while ((line = reader.readLine()) != null) {
if (line.endsWith("\\")) {
line= line.substring(0, line.length()-1);
System.out.print(line);
} else {
System.out.println(line);
}
}
}
输出
line 1
line 2line 2cnt
line 3
不确定,为什么在机器上看不到反斜杠。你能发布完整的代码和文件内容吗?你在什么平台上运行它?什么是文件的编码?也许您需要将编码传递给InputStreamReader,如下所示:
BufferedReader reader = new BufferedReader(new InputStreamReader(fileInputStream, "UTF-8"));
答案 3 :(得分:0)
这是eclipse ide的编译问题,我重新启动了eclipse并进行了清理编译。现在每件事都按预期工作。谢谢你们的时间。