2013-09-23 3 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} 

Затем я сравниваю использование первого элемента массива 1 с первым элементом массива2. Если он равен сравнению 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 helleo '.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

Попытайтесь заменить части исходной строки элементами из массива, где элементы будут «расширены» с информацией о прохождении или сбое.

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" 

выход:

[Hello, World ,, Java]

String B = "Hello World Java" 

выход:

[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> 
Смежные вопросы