首页 > 解决方案 > 如何用以下更改替换以下代码。请看代码片段

问题描述

我想用 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));

标签: java

解决方案


推荐阅读