Заменить все броски метода PatternSyntaxException

java regex string replaceall patternsyntaxexception

2971 просмотра

1 ответ

посмотрите на следующий код:

String comment = "1)FCR pick up in Hong Kong2)Local charges will be paiy in Hong Kong & in HK$.3)Booking:virginiawong@fahkco.com.hk4)FCR&DOC:emilywu@fahkco.com.hkTel:00852-23021977Fax:00852-2730217Transaction865320submittedVirginiaWong(T1281954U005) and Status is INCMP  on 10-JUN-11 11.28.45.764386 PM -05:00";
        //comment = comment.replaceAll("\\)", "\\\\)");
        //comment = comment.replaceAll("\\(", "\\\\(");
          if(comment == null || comment.length() < 100)
          {
            System.out.println();  
          }
         String[] strArray =    comment.split(" ");
         for (int i = 0; i < strArray.length; i++) 
           { 
              if(strArray[i].length() > 100)
               {
                 int iter = strArray[i].length() / 100 ;
                 int count = 100 ;
                 int initCount = 0 ;
                 String strReplace = null;

                    for(int j =0 ; j< iter ; j++)
                    {
                      strReplace = strArray[i].substring(initCount ,count); 

                      String strToReplace =  strReplace + "\n" ;
                      comment = comment.replaceAll(strReplace,strToReplace);
                      //comment = comment.replaceAll("\\)", "\\\\)");
                      //comment = comment.replaceAll("\\(", "\\\\(");
                      //comment = comment.replaceAll("\\\\", "");
                      System.out.println(comment);
                      System.out.println(comment.contains("\n"));   
                      initCount = count; //+1 ; 
                      count = count +100 ;
                    } 

                }   

            }
    }


Когда я бегу, я получаю следующее исключение:

Исключение в потоке "основной" java.util.regex.PatternSyntaxException: Непревзойденная закрытие ')'
рядом с индексом 4 HK $ 0,3) Бронирование: virginiawong@fahkco.com.hk4) F и DOC: emilywu@fahkco.com.hkTel: 00852-
23021977Fax : 00852-2

Исходя из моего понимания, я должен избежать паратезов '(', ')', я пытался сделать это (посмотрите на прокомментированную часть в коде), не было никаких исключений, но новая строка, которую я добавляю в строку, не кажется появляться.

Автор: Srini Источник Размещён: 12.11.2019 09:04

Ответы (1)


2 плюса

Решение

String.replaceAllиспользуйте регулярные выражения для первого аргумента, и такие символы )имеют особое значение при интерпретации как регулярные выражения.

Попробуй String.replaceвместо. (Он по-прежнему заменяет все вхождения данной подстроки.)

Автор: aioobe Размещён: 30.07.2012 05:46
Вопросы из категории :
32x32