2012-12-03 8 views
2

내 자바 코드에서 문자열 입력에 앞서 언급 한 특수 문자가 있거나 그 앞에 \이 있어야하는 것과 같은 것을 원합니다.

특수 문자 집합은 {+, -, &&, ||, !, (,), {, },[, ], ^, "", ~, *, ?, :, \}입니다. inputString.replaceAll(old,new)을 사용해 보았습니다. 놀랍지 만 작동하지 않습니다. '오래된'과 '새로운'에 대한 적절한 값을 제공하고 있습니다.

특수 문자를 String 배열에 넣고 for 루프에 반복하여 문자열에 문자열이 있는지 확인합니다 (예 : input.replaceAll(":","\\:")). 그러나 그것은 나에게 의도 된 결과를주지 못한다. 도와주세요.String, replaceAll이 실패 할 때 특수 문자를 이스케이프 특수 문자로 바꿉니다

String[] arr = { "+", "-", "&&", "||", "!", "(", ")", "{", "}", 
        "[", "]", "^", "\"", "~", "*", "?", ":", "\\", "AND", "OR" }; 

     for (int i = 0; i < arr.length; i++) { 
      System.out.println("arr[" + i + "]>>>>>>>>>>>>>>>" + arr[i]); 
      System.out.println(search.contains((String) arr[i]) 
        + "---------->" + arr[i]); 

      if (search.contains((String) arr[i])) { 
       System.out.println("..index..."+search.indexOf((String) arr[i])); 
       String oldString = (String) arr[i]; 
       System.out.println("check if it has old string" 
         + search.contains(oldString)); 
       String newString = new String("\\" + arr[i]); 
       System.out 
         .println("About to replace special chars....with..." 
           + newString); 

       search = search.replaceAll(oldString, newString); 
       String newSearch = new String(search.replaceAll(arr[i], 
         newString)); 
       System.out 
         .println("Search String after replaceAll is ------------->: " 
           + newSearch); 
       System.out.println("--------------" 
         + search.replaceAll(arr[i], newString) 
         + "---------------" + search); 

      } 
     } 

답변

0

당신은 (무엇을 탈출하기 전에)의 첫 싱글 백 슬래시를 이스케이프 할 필요하거나 일부 백 슬래시를 이스케이프 두 배로.

예 : 1+1

\+ =>1\+1

에 의해 +\\에 의해 \를 교체하십시오 =>1\\+1 (죄송!)

0

회원님이 답이있는 경우 확인합니다. 오늘 나는 똑같은 것을 시도했다. 내 솔루션을 사용하도록 코드를 수정했습니다. 희망 당신을 위해 도움이됩니다.

String search = "$&+"; 

String[] arr = { "+", "-", "&&", "||", "!", "(", ")", "{", "}", "[", "]", "^", "\"", "~", "*", "?", ":", "\\", "AND", "OR" }; 

for (int i = 0; i < arr.length; i++) { 
System.out.println("arr[" + i + "]>>>>>>>>>>>>>>>" + arr[i]); 
System.out.println(search.contains((String) arr[i]) 
     + "---------->" + arr[i]); 

if (search.contains((String) arr[i])) { 
    System.out.println("..index..."+search.indexOf((String) arr[i])); 
    String oldString = (String) arr[i]; 
    System.out.println("check if it has old string" 
      + search.contains(oldString)); 
    String newString = new String("\\\\" + arr[i]); 
    System.out 
      .println("About to replace special chars....with..." 
        + newString); 

    search = search.replace("\\" + oldString, newString); 
    String newSearch = new String(search); 
    System.out 
      .println("Search String after replaceAll is ------------->: " 
        + newSearch); 

} 

}

관련 문제