Java 第二,一切都不起作用
我的代码不起作用。我想替换所有逗号,但替换这些逗号“,”和这个Java 第二,一切都不起作用,java,replace,comma,Java,Replace,Comma,我的代码不起作用。我想替换所有逗号,但替换这些逗号“,”和这个},{ import java.io.*; public class converter { public static void main(String[] args) throws IOException { try { BufferedReader br = new BufferedReader( new FileReader("C:/Users/Sei_Erfolgr
},{
import java.io.*;
public class converter {
public static void main(String[] args) throws IOException {
try {
BufferedReader br = new BufferedReader(
new FileReader("C:/Users/Sei_Erfolgreich/Desktop/convert.txt"));
String zeile;
try {
File newTextFile = new File("C:/Users/Sei_Erfolgreich/Desktop/convert2.txt");
FileWriter fw = new FileWriter(newTextFile);
while ((zeile = br.readLine()) != null) {
zeile = zeile.replaceAll("\",\"", "\uffff").replaceAll(",", "").replaceAll("\uffff", "\",\"")
.replaceAll("\uffff", "},{")
.replaceAll("},{", "\uffff");
System.out.println(zeile);
fw.write(zeile);
}
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
}
}
所以我想让这个逗号停留在},{
之间,但它不起作用,我得到一条错误消息“线程中的异常”main“java.util.regex.PatternSyntaxException:索引1},{
”replaceAll()
方法采用正则表达式而不是正则字符串。大括号在Java正则表达式中有特殊的意义
您必须避开大括号,否则它们将被理解为正则表达式的一部分
但是,以下表达式将无法正常工作:
zeile.replaceAll("\",\"", "\uffff")
.replaceAll(",", "")
.replaceAll("\uffff", "\",\"")
.replaceAll("\uffff", "},{")
.replaceAll("},{", "\uffff");
因为您正在使用多个调用replaceAll()
,所以您正在生成多个中间结果,并且结果取决于先前的中间结果
e、 g.如果输入字符串的内容为“,”,},{
,则您的程序将:
1. zeile.replaceAll("\",\"", "\uffff") // input = \uffff,},{
2. .replaceAll(",", "") // input = \uffff}{
3. .replaceAll("\uffff", "\",\"") // input = ","}{
4. .replaceAll("\uffff", "},{") // input = ","}{
5. .replaceAll("\\},\\{", "\uffff"); // input = ","}{
注:
- 请注意,第1行和第3行做的是相反的更改,首先用
替换所有出现的\uffff
,然后将它们全部替换回来,“
- 第4行永远不会执行,因为第3行中所有出现的
都已被替换\uffff
- 第5行也不会执行,因为第2行中已替换了所有出现的
,
{
和}
在正则表达式(量词)中有特殊含义。请使用\
对这些字符进行转义
使用第二个\
对Java进行转义
结果:.replaceAll(“\\},\\{,“\\uffff”);
更新
按以下方式更改替换的顺序:
zeile = zeile.replaceAll("\",\"", "\uffff") //backup any ","
.replaceAll("\\},\\{", "\ueeee") //backup any },{
.replaceAll(",", "") //replace all commas that are still in the string
.replaceAll("\uffff", "\",\"") //restore ","
.replaceAll("\ueeee", "},{"); //restore },{
不知道第2个replaceAll是什么,但第4个不会有太多的内容。之所以这样叫是因为它替换了所有出现的内容;
replace
也会这样做。之所以这样叫是因为它替换了与给定正则表达式匹配的所有字符串。请注意,replaceAll
t有5个实例这里。我想你不是真的想要两个。你真的应该把语句分解成多个分配给temp的语句——这样调试更容易,效率也不会降低。不工作,我尝试用我自己的方式。replaceAll(“\\},\\\{,“\uffff”),但它仍然删除有解决方案,但无法发布^^