Java 프로그램을 사용하여 즉석에서 만든 일부 json 형식의 데이터를 저장하는 Java에 StringBuilder 개체가 있습니다. AL 내가하려는 것은 StringBuilder 객체에서 String 1의 발생을 String 2로 바꾸는 것입니다. 대체 할 아래 코드를 작성했지만 작동하지 않습니까? 간단한 문자열 교체를 수행하는 이유 또는 효율적인 방법은 무엇입니까?
StringBuilder json = new StringBuilder ();
public void method1(){
String replacelater = " {\"name\":\" <font color=\\\"#FF0000\\\">"+funcvp_name4.trim()+" <\\/font> \", \"children\":[ ";
callingmethod2();
String replacewith = " {\"name\":\" <font color=\\\"#FF0000\\\">"+funcvp_name4.trim()+totalempforfuncvp+" <\\/font> \", \"children\":[ ";
String jsonnew = json.toString();
jsonnew.replaceFirst(replacelater, replacewith);
json.setLength(-1);
json.append(jsonnew);
}
오류:
Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal repetition near index 2
{"name":" <font color=\"#FF0000\">(7H Cost 806) <\/font> ", "children":[
^
at java.util.regex.Pattern.error(Unknown Source)
at java.util.regex.Pattern.closure(Unknown Source)
at java.util.regex.Pattern.sequence(Unknown Source)
at java.util.regex.Pattern.expr(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.util.regex.Pattern.<init>(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.lang.String.replaceFirst(Unknown Source)
at CreateChart.iterateFuncVPNamesFromArrayList(CreateChart.java:496)
at CreateChart.getDataFromEMPHCForFuncVp(CreateChart.java:110)
at CreateChart.main(CreateChart.java:964)
코드에는 두 가지 주요 문제가 있습니다. 첫째,의 첫 번째 인수 replaceFirst
는 정규식으로 처리되므로 백 슬래시 및 중괄호와 같은 것은 검색 할 리터럴 항목이 아니라 메타 문자 입니다. replaceFirst
를 사용해야 하는 리터럴 문자열과 일치합니다 Pattern.quote
.
두 번째로 Java의 문자열은 변경 불가능 replaceFirst
합니다. 호출 된 문자열을 수정하지 않고 결과를 새 문자열로 반환합니다.
String jsonnew = json.toString().replaceFirst(
Pattern.quote(replacelater), replacewith);
또는 replace
메서드는 첫 번째 매개 변수를 정규식이 아닌 리터럴 문자열로 취급하지만 첫 번째 매개 변수뿐만 아니라 모든 항목 을 대체 합니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다