如何用以下更改替换以下代码。请参阅代码段

时间:2019-03-25 08:17:10

标签: java

我想用secondPattern更改firstPattern。当我使用模式匹配器/ String.replaceAll()时 我正在使用以下逻辑替换

System.out.println(fileContent.replaceAll(firstPattern, secondPattern));

我遇到以下错误=

at java.util.regex.Pattern.error(Pattern.java:1955)
at java.util.regex.Pattern.closure(Pattern.java:3157)
at java.util.regex.Pattern.sequence(Pattern.java:2134)
at java.util.regex.Pattern.expr(Pattern.java:1996)
at java.util.regex.Pattern.compile(Pattern.java:1696)
at java.util.regex.Pattern.<init>(Pattern.java:1351)
at java.util.regex.Pattern.compile(Pattern.java:1028)
at java.lang.String.replaceAll(String.java:2223)

之所以发生这种情况,是因为在第一个模式中,我使用了“ {”和“}”花括号。因此它引发了错误。不知道如何替换它们。

    String firstPattern = "text.append(\" where \");\r\n" + 
            "        text.append(\"ObjId\" + \" = \");\r\n" + 
            "        text.append(getObjId().toString());\r\n" + 
            "\r\n" + 
            "        text.append(\" and \");\r\n" + 
            "        text.append(\" LastCngDTime =  \");\r\n" + 
            "\r\n" + 
            "        try {\r\n" + 
            "            tempString = dbaExecObj.Get_DataConverter()\r\n" + 
            "                                   .SmsTimeStampToDBMSTimestampString(LastCngDTime,\r\n" + 
            "                    \"-WQ\");\r\n" + 
            "        } catch (Exception e) {\r\n" + 
            "            throw new SmsTntResult(new SmsSystemResult(logger,\r\n" + 
            "                    SmsCsvWhoAmI.getMyFullyQualifiedMethodName(),\r\n" + 
            "                    SmsTntCodes.DATA_TYPE_CONVERSION_ERROR,\r\n" + 
            "                    SmsSystemResult.ERROR));\r\n" + 
            "        }\r\n" + 
            "\r\n" + 
            "        text.append(tempString);";
    String secondPattern = "text.append(\" where \");\r\n" + 
            "        text.append(\"ObjId\" + \" = \");\r\n" + 
            "        text.append(getObjId().toString());\r\n" + 
            "\r\n" + 
            "        text.append(\" and \");\r\n" + 
            "        text.append(\" LastCngDTime =  \");\r\n" + 
            "\r\n" + 
            "        try {\r\n" + 
            "            tempString = dbaExecObj.Get_DataConverter()\r\n" + 
            "                                   .SmsTimeStampToDBMSTimestampString(LastCngDTime,\r\n" + 
            "                    \"-WQ\");\r\n" + 
            "        } catch (Exception e) {\r\n" + 
            "            throw new SmsTntResult(new SmsSystemResult(logger,\r\n" + 
            "                    SmsCsvWhoAmI.getMyFullyQualifiedMethodName(),\r\n" + 
            "                    SmsTntCodes.DATA_TYPE_CONVERSION_ERROR,\r\n" + 
            "                    SmsSystemResult.ERROR));\r\n" + 
            "        }\r\n" + 
            "\r\n" + 
            "        text.append(\"CAST(\");" +
            "        text.append(tempString);" +
            "        text.append(\" AS datetime)\");";
    String fileContent = new Scanner(new File(filePath)).useDelimiter("\\A").next();
    System.out.println(fileContent.replaceAll(firstPattern, secondPattern));

0 个答案:

没有答案