패키지 빌더; 수입 인 java.util.ArrayList; 수입 은 java.util.List; 공용 클래스 테스트 { 공공 정적 무효 메인 (문자열 []에 args) { // 下面期望输出[jgajgaagi; aghuhagajagg; g, ga23ty1] 문자열 STR = "agaggaga <A; agpjgajgaagi; aghuhagajagg; gakagkogagpga23ty1ak1hg" ; 문자열 개방 = "는 * GP" ; 문자열 가까이 = "AK" ; // 下面期望输出[AG, PJ, I; aghuha, g; 코] 문자열 STR2 = "agaggaga <A; agpjgajgaagi; aghuhagajagg; gakagkogaga23ty11hg" ; 문자열 open2 = "AG" 문자열 close2 = "조지아" ; 목록 <문자열> midList = getMidList (캐릭터, 열기, 닫기); 목록 <문자열> midList2 = getMidList (STR2, open2, close2); 에서 System.out.println (midList); 에서 System.out.println (midList2); } 공공 정적 목록 <문자열> getMidList (문자열 str을 오픈 문자열, 문자열 닫기) { 목록 <문자열> retList = 새로운 ArrayList를 <> (); // 存储结果 경우 (isEmpyty (STR) || isEmpyty) (오픈 || isEmpyty이 (닫기)) { 반환 retList을; } 목록<문자열> = openList 에는 getString (STR 오픈); 목록 <문자열> closeList = 에는 getString (STR, 닫기); 만약 (! openList.isEmpty () && closeList.isEmpty ()) { 문자열 온도 = 널 (null) ; 외부 : 대 (문자열 사전 : openList) { 위한 (서브 스트링 : closeList) { INT I = str.indexOf (프리); 경우 (I == -1 ) { 계속 외측; } I = I + ) (pre.length 단계; STR = str.substring (I); // 去掉头 INT DD = str.indexOf (부); 경우 (이 DD == -1 ) { 계속 ; } 온도 = STR; retList.add (str.substring ( 0 , DD)); STR = temp.substring (DD + sub.length ()); 휴식 외부; } } } 동안 ( 사실 ) { 경우 ( 널 (null) == str을 || retList.isEmpty ()) { 휴식 ; } openList = 에는 getString (STR 오픈); closeList = 에는 getString (STR 근접); 경우 (openList.isEmpty () || closeList.isEmpty는 ()) { 휴식 ; } 문자열 TEMP2 = 널 (null) ; 외부 : 위해 {(openList 문자열 사전) 에 대한 (서브 스트링 : closeList) { int로 I =str.indexOf (프리); 경우 (I == - 1 ) { 계속 외측; } 난 = 난 + ) (pre.length 단계; STR = str.substring (I); // 去掉头 INT DD = str.indexOf (부); 경우 (DD의 == 것은 - 1 ) { 계속 ; } TEMP2 = STR; retList.add (str.substring ( 0 , DD)); STR = temp2.substring (DD + sub.length ()); } } } 반환 retList을; } 공공 정적 부울 isEmpyty (문자열 STR) { 경우 ( 널 (null) . == str을 || STR == ""|| str.trim () 길이 () == 0 ) { 반환 사실 ; } 반환 거짓 ; } 공용 정적 리스트 <문자열> 에는 getString (문자열 str을 문자열 오픈) { 문자열 [] 스플릿 = open.split ( "\\ *" ); 목록 <문자열> 목록 = 새로운 ArrayList를 <>만약(); (split.length == 1 ) { 문자열 사전 = 분할 [0 ]; 만약 - (! 1 str.indexOf) (프리 = {) ]에는 list.add (프리) } 반환 목록; } 경우 (split.length> = 3 ) { 복귀 리스트; } 문자열 S1 = 분할 [0 ]; 문자열 S2 = 분할 [1 ]; 문자열 온도 = 널 (null) ; 반면 ( 참 ) { int로 난을 = str.indexOf (S1); 만약(I ==은 - 1 ) { 중단 ; } INT의 I2 = str.indexOf (S2); 경우 (I2의하면 == - 1 ) { 중단 ; } 온도 = STR; 에는 list.add (str.substring (I, I2 + s2.length ())); STR = temp.substring (I2 + s2.length ()); } 반환 목록; } }