2013-09-23 3 views
1

자바 스윙을 사용하여 비교 텍스트 도구를 개발했습니다. 내 비교 로그인은 다음과 같이 작동합니다.Java - 문자열 사이의 공백 확인

String A = "Hello World Java" 
String B = "Hello World Java" 

내가, 내가 기본적으로 split 문자열이 다음 내 배열 목록에 추가 " "(space)을 사용하여 무슨 짓을. arraylist는 이렇게 보일 것입니다.

array1(0) = {Hello} array1(1)={World} array1(2)={Java} 
array2(0) = {Hello} array2(1)={World} array2(2)={Java} 

그런 다음 array1의 첫 번째 요소를 array2의 첫 번째 요소와 비교합니다. 같으면 비교가 PASS이고 실패하면 FAIL으로 표시해야합니다. 그리고 그 결과는 이렇게 될 것입니다.

<pass>Hello<pass><pass>World<pass><pass>Java<pass> 

필자는 간격을 표시해야하는 부분이 개선되었습니다. 그래서 최종 결과물은 이렇게 될 필요가 있습니다.

<pass>Hello<pass><quote><pass>World<pass><quote><quote><pass>Java<pass> 

어떻게하면 될까요? 제발 조언.

+0

. 예를 들어, "hello hello hello hello".split ("") .length'는 8을 반환합니다. –

+0

@ ОлександрСамсонов 저는 그렇게 생각하지 않습니다. 당신은 단지 4가 아니라 8을 반환합니다. –

+0

[this] (http://stackoverflow.com/questions/16586656/extract-all-occurrences-of-pattern-k-and-check-if-string-matches-k - in-1-pass) 도움이 될지도 모른다. – chanaka777

답변

0

원래 문자열의 일부를 array의 요소로 대체하십시오. 여기서 요소는 통과 또는 실패 정보로 "강화"됩니다.

void checkString(String orig, String part, Boolean passed) { 
    if (passed) { 
     a.replace(part, "<pass>" + part + "<pass>"); 
    } else { 
     a.replace(part, "<fail>" + part + "<fail>"); 
    } 
} 

은 그래서 예 :

String A = "Hello World Java" 
String B = "Hello World Java" 

// Do comparison, like you do 

// take your first array 
array1(0) = {Hello} array1(1)={World} array1(2)={Java} 

// call method for each part in array 
checkString(A, array1(0), isPassed); 
0

나는이 몇 가지 시뮬레이션을 실행하려고하고, 나는이 결과를 가지고 :

String A = "Hello World Java" 

출력 :

[안녕하세요, 세계 ,, Java]

(210)

출력 :

[안녕하세요, 세계, 자바]

때문에,이 문제를 해결하기 위해, 내가 좋아하는, 최종 출력을 청소 교체 사용 :

Arrays.toString(yourString.split(" ")).replace(" ", "").replace(",,", ",") 

나는 생각 모든 입력 작업.

희망 하시겠습니까? ^^

0

원하십니까?

public static String compare(String[] a, String[] b) { 
    String op = ""; 
    int len = a.length > b.length ? a.length : b.length; 
    for (int i = 0; i < len; i++) { 
     String aVal = ""; 
     String bVal = ""; 
     if (a.length > i) { 
      aVal = a[i]; 
     } 
     if (b.length > i) { 
      bVal = b[i]; 
     } 
     if (aVal.equals(bVal)) { 
      op += "<pass>" + a[i] + "<pass>"; 
     } else { 
      op += "<fail>" + a[i] + "<fail>"; 
     } 
     if (i != len - 1) { 
      op += "<quote>"; 
     } 
    } 
    return op; 
} 

public static void main(String[] args) { 
    String A = "Hello World Java1 A"; 
    String B = "Hello World Java"; 
    String[] splitA = A.split(" "); 
    String[] splitB = B.split(" "); 
    System.out.println(compare(splitA, splitB)); 
} 

출력 : 당신은 "`에 의해 분할 메소드를 호출하여 배열의"문자열 "`당신으로 여분의 공백을 얻어야한다"

<pass>Hello<pass><quote><pass>World<pass><quote><fail>Java1<fail><quote><fail>A<fail>