java - 将特定位置的字符串替换为另一个字符串,而无需在 java 中进行硬编码

标签 java regex replaceall

我正在从文件中的特定位置读取字符串,我需要通过调用函数进行一些转换,并且必须在同一位置替换生成的字符串。下面的代码会抛出非法重复错误,因为我的字符串包含“}”、“{”等字符。当这些字符没有特别硬编码时,我不知道如何转义这些字符。请帮忙。

    String MFstr = strLine.substring(612,623);
    StringBuilder sbMFstr=new StringBuilder (strLine.substring(612,623));


    String temp="";
    if (mfn.isNegativeMFOrNegativeOverPunch(MFstr)){
        temp = "-"+MFstr;}
    else{
    temp=MFstr;}
    String number=mfn.MForOverPunchToNumber(MFstr);
    if( temp.startsWith("-")){
        //Positive is false
        number = "0" + number;

    }
    strLine.replaceAll(MFstr, number);  //This line throws Exception

最佳答案

replaceAll 的第一个参数是正则表达式。 {} 是正则表达式中的出现字符。你可以这样做

strLine = strLine.replaceAll(Pattern.quote(mfStr), number);  

或者简单地

strLine = strLine.replace(mfStr, number);  

关于java - 将特定位置的字符串替换为另一个字符串,而无需在 java 中进行硬编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33961562/

相关文章:

java - 如何记录一个接口(interface)所有实现的每个方法的时间成本

arrays - 匹配数组时Powershell使用通配符

java String.replaceAll 正则表达式问题

java - 如何使用 replaceAll 删除部分文本

XML 模式上的 Java 字符串替换

java - Primefaces 推送 : Error on deploy in JBoss 7. 2

java - java中如何从字符串中过滤掉数字?

java - Android:目录和子目录列出连续 Activity 问题

javascript - 正则表达式末尾的/i 是什么意思?

javascript - 使用 jquery 从批量文本中提取所有电子邮件地址