gpt4 book ai didi

java - 第二次替换全部不起作用

转载 作者:行者123 更新时间:2023-12-02 05:00:57 24 4
gpt4 key购买 nike

我的代码不想工作。我想替换所有逗号,但替换这些逗号“,”和这个 },{

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();
}

}
}

所以我想让这个逗号留在 },{ 之间,但它不起作用,我收到一条错误消息 "Exception in thread "main"java.util. regex.PatternSyntaxException:索引 1 附近存在非法重复 },{"

最佳答案

replaceAll() 方法采用正则表达式而不是正则字符串。 大括号在 Java 正则表达式中具有特殊含义

您必须转义大括号,否则它们将被理解为正则表达式的一部分。

但是以下表达式将无法正常工作:

zeile.replaceAll("\",\"",  "\uffff")
.replaceAll(",", "")
.replaceAll("\uffff", "\",\"")
.replaceAll("\uffff", "},{")
.replaceAll("},{", "\uffff");

由于您使用了多次调用 replaceAll(),因此您将生成多个中间结果,并且这些结果取决于之前的中间结果。

例如如果输入字符串的内容为 ",",},{,您的程序将:

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 行永远不会执行,因为所有出现的 \uffff 已在第 3 行中替换
  • 第 5 行永远不会执行,因为所有出现的 , 已在第 2 行中替换

关于java - 第二次替换全部不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28286822/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com