当前位置: 首页 > 知识库问答 >
问题:

String.replaceAll()不适用于某些文件和字符串[重复]

赵灼光
2023-03-14

这是代码:

public static void update(String stringOld, String stringNew, String strPath) {
    Path path = Paths.get(strPath);
    Charset charset = StandardCharsets.UTF_8;
    try {
        String content = new String(Files.readAllBytes(path), charset);
        content = content.replaceAll(stringOld, stringNew);
        Files.write(path, content.getBytes(charset));
    } catch (IOException e) {
        System.out.println("\n\nERRORE: " + e.getMessage() + "\n");
    }
}

stringOld:

IDX=8, Tipo=Auto, Marca= , Modello= , Versione= , Anno=2002, Potenza(CV)=200, Cambio=Manuale, Carburante=Benzina, Posti=20, Porte=5, Colore=gkgdl, Condizione=Nuovo, Prezzo=4500;

StringNew:

IDX=8, Tipo=Auto, Marca=Maserati, Modello=Levante, Versione=Gransport, Anno=2020, Potenza(CV)=250, Cambio=Automatico, Carburante=Diesel, Posti=5, Porte=5, Colore=Bianca, Condizione=KM0, Prezzo=75000;

输出:

...; 
IDX=8, Tipo=Auto, Marca= , Modello= , Versione= , Anno=2002, Potenza(CV)=200, Cambio=Manuale, Carburante=Benzina, Posti=20, Porte=5, Colore=gkgdl, Condizione=Nuovo, Prezzo=4500;
...;

字符串字符串Old 与文件中的某一行匹配,但不会替换为 stringNew。如果我对另一个字符串使用相同的方法,并且在另一个文件上,它可以正常工作

共有2个答案

凌展
2023-03-14

如果要使用字符串而不是正则表达式作为源,请使用:

String.replace(CharSequence,CharSequence)
韩晋
2023-03-14

“oldString”中的括号是用于分组的正则表达式中的特殊字符。因此,它不匹配。

您可以通过在此处粘贴文本和正则表达式或其他在线工具进行测试

你应该在括号前面加一个反斜杠来转义它。=

 类似资料:
  • 我正在编辑从tesseract ocr收到的一些电子邮件。 以下是我的代码: 但输出不正确。 输入: 输出: 但是当我在每次替换后将结果赋给一个新的字符串时,它工作得很好。为什么在同一个字符串中连续赋值不起作用?

  • 问题内容: 尝试用变量替换字符串中所有#实例。它不起作用,但也不能重新调整任何错误。 哈希仍然存在。 不确定我缺少什么? 问题答案: 返回一个新字符串(它不会修改现有字符串),因此您需要: 尽管自动类型转换可能会为您处理字符串,但您可能还应该创建一个字符串。 仅供参考,在Javascript中,字符串是不可变的-现有字符串永远不会被修改。因此,这使得修改字符串的任何方法(如,,,,,,,等…)总是

  • 我正在使用来自openweathermap的json API数据来获取有关特定城市的信息。 几天前还好好的,现在由于某种原因,每个标有塞尔维亚国家代码“RS”的城市都不能工作了。http://api.openweathermap.org/data/2.5/weather?q =塞尔维亚贝尔格莱德 如果我使用其他国家的城市,例如这个,它是有效的:http://api.openweathermap.o

  • 当我尝试对输入进行限制时,我在java中遇到了很多麻烦。在此示例中,我需要字符串代码仅接受和等符号。我如何检查以确保没有数字、字母或其他符号?谢谢

  • 问题内容: 我在使用python eval函数执行多行字符串时遇到问题/ 问题答案: 只能评估Python 表达式 ,不能评估语句。函数定义是语句,而不是表达式。 使用执行Python语句。 请参阅“ 顶层组件” 文档 ,该文档在 文件输入 和 表达式输入 之间进行区分(其中包括): 在以下情况下使用此语法: […] 解析传递给该语句的字符串时; 和 […]的字符串参数必须具有以下形式: 千万 不

  • 我正在做一个与Runtime.exec()相关的练习,我明白Runtime.exec不是一个shell解释器,这就是为什么我执行"bash-c'命令'"来代替,但是出于某种原因,我可以执行ls之类的命令,但不能执行回显或重定向或多个命令。这些不起作用: 这是我的java代码: 我使用语法运行上述命令: 这工作原理: 我在Ubuntu 20.04和zsh上使用openjdk 11.0.15。有人能告