我之前见过其他人问过类似的问题并遵循给这些人的指示,但我仍然无法让我的代码正常运行。
try {
FileReader fr_p = new FileReader("p.txt");
BufferedReader in_p = new BufferedReader(fr_p);
String line = in_p.readLine();
for (;;) {
line = line.replaceAll("&","&");
line = line.replaceAll("<","<");
line = line.replaceAll(">",">");
line = line.replaceAll("\"",""");
people.add(line);
line = in_p.readLine();
if (line == null) break;
}
in_p.close();
} catch (FileNotFoundException e) {
System.out.println("File p.txt not found.");
System.exit(0);
} catch (IOException e) {
System.out.println("Error reading from file.");
System.exit(0);
}
这是我编写的代码,用于尝试将每个名称放在文本文件的单独行上,并将其放入ArrayList中,将特殊字符替换为其XML实体。然后我将其写入HTML文件中。
我编写的代码对前三个字符做得很好,但是当它到达试图将任何双引号更改为"
的行时,它不会改变它们并且最终给了我â€
而不是双引号。我不确定我的代码还应该改变什么才能让它发挥作用。
答案 0 :(得分:1)
当我跑步时
String line = "This is a string with \" and \" in it";
line = line.replaceAll("\"",""");
System.out.println(line);
我得到了
This is a string with " and " in it
注意:有很多不同类型的引号,但只有一个"
字符。如果您有不同的引号,则不匹配。
答案 1 :(得分:1)
我和你有同样的行为。 java编译器正在引用你的转义符号&#39;&#34;&#39;&#39;字符。 regex编译器必须有一些奇怪的东西,期望在输入字符串文字时也可以转义引号。它不应该,但在这种情况下它是。
如果你预先设置了一个转义逃生,它就可以了。
String lineout = line.replaceAll("\\\"",""e;");
或者,您可以将String对象用于搜索表达式。
String line = "embedded\"here";
String searchstring = "\"";
String lineout = line.replaceAll(searchstring,""e;");
答案 2 :(得分:0)
我会将您的代码更改为此类
line = line.replace("&","&")
.replace("<","<")
.replace(">",">")
.replace("\"",""");
它应该像你的一样工作但是没有必要使用regexp来简单替换。
答案 3 :(得分:0)
如果您遇到编码问题,可以通过unicode代码设置单引号来解决此问题:
line = line.replaceAll("\"", "\u0027");
答案 4 :(得分:0)
替换为
String replace = line.replace(""", "''");
&#13;