我有一个文本文件,每行包含一个字符串,并且每个字符串已经为Java格式化,这意味着所有内容都已经转义。我尝试使用BufferedReader,但是它会转义字符串中的每个反斜杠,使得字符串看起来不应该如此(例如" \" hello \""将结果为" \\"你好\\&#34)。反正有没有避免这个?
答案 0 :(得分:2)
您无需转义文件本身的内容。这只适用于在Java代码中键入String文字的情况。当直接从文件中读取时,文件的内容将按字面解释。
换句话说,如果你的文件说:
"hi"
将其读入字符串,然后System.out.println
将其打印出来
"hi"
如果您遇到不可打印字符的问题,这可能与编码问题有关(您必须更具体并举例说明)。我总觉得这篇文章具有启发性:http://www.joelonsoftware.com/articles/Unicode.html
要使用特定编码读取文件,请使用InputStreamReader设置编码。
但看起来你正在阅读源代码,其中一部分有一个你想要解释的字符串。对于该特定字符串,您可以将其传递给StringEscapeUtils.html#unescapeJava
答案 1 :(得分:0)
您可以尝试beanshell
例如,假设您有一个像这样的文件\ “XYZ \”
然后
import java.io.BufferedReader;
import java.io.InputStreamReader;
import bsh.Interpreter;
public class ReadFile {
public static void main(String[] args) throws Exception{
Interpreter i = new Interpreter(); // Construct an interpreter
BufferedReader br = new BufferedReader(new InputStreamReader(ReadFile.class.getResourceAsStream("file.txt")));
String line = null;
while((line = br.readLine())!=null){
// System.out.println(line);
i.eval("foo = \""+line+"\"");
String foo = (String)i.get("foo");
System.out.println(foo);
}
br.close();
}
}
你会得到
“XYZ”
(而不是\“xyz \”)
答案 2 :(得分:0)
我尝试使用BufferedReader,但它会转义字符串中的每个反斜杠,使字符串看起来不应该如此(例如" \" hello \""会结果为" \"你好\")。
不,它没有。你错了。