2013-09-23 31 views
1

我開發了一個使用Java Swing的比較文本工具。我的比較登錄工作是這樣的。Java - 檢查字符串之間的空格

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

我所做的是,我基本上split字符串使用" "(space)然後添加到我的數組列表。數組列表將如下所示。

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

然後我使用array1中的第一個元素與array2中的第一個元素進行比較。如果它等於比較是PASS,如果它失敗,我需要顯示爲失敗。而輸出將是這樣的。

<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 helleo」.split(「」).length' returns 8 –

+0

@ОлександрСамсонов我不這麼認爲。在你的情況下,它只返回4而不是8. –

+0

[this](http://stackoverflow.com/questions/16586656/extract-all-occurrences-of-pattern-k-and-check-if-string-matches-k在1通)可能有幫助 – chanaka777

回答

0

嘗試用來自數組的元素替換原始字符串的部分,其中元素將被「增強」,具有通過或失敗的信息。

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]

String B = "Hello World Java" 

輸出:

[你好,世界,爪哇]

所以,要解決這個問題,我用的是替代清潔最終的輸出,如:

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>