Как сравнить две строки в Java? - PullRequest
1 голос
/ 12 января 2012

У меня есть список ситуаций, как показано ниже: строка A <-------> строка B

enter image description here

Я должен сравнить A с B со следующим условием:

1 - если число, показанное в чтении, отличается с обеих сторон, но остальное одинаково, это означает, что A = B.

2 - в некоторых ситуациях, например, в первой стороне A после числа, показанного красным цветом, пробела нет, но в стороне b есть пробел после числа, показанного красным цветом, а также после X.

3 - есть также разные случаи, такие как номер 3

Теперь, как мне лучше сравнить эти две строки?

private static void controlSimilarity(String memo,String ck,String bc,String id,String product) {

           if(!id.equals(product)){

            listIdentifier.add(new MmoCnBcIdProduct(memo,ck,bc,id,product));
           }

Ответы [ 3 ]

1 голос
/ 12 января 2012

Я бы попытался "нормализовать" строки. Введите заглавные буквы, замените «\ s + X \ s +» на «X», замените «\ s +%» на «%», «\ s + MG» на «MG» и т. Д., Затем разделите его на пробелы или некоторые регулярные выражения (Класс сканера или разделитель гуавы) и сравните части строки.

0 голосов
/ 12 января 2012

Исходя из ваших примеров данных, я советую нормализовать каждую строку, добавив пробел между каждой группой цифр и символов. Итак, образец 2

TASIGNA CAPS 1X200MG  <---->  TASIGNA CAPS 112 X 200 MG

станет:

TASIGNA CAPS 1 X 200 MG  <---->  TASIGNA CAPS 112 X 200 MG

Теперь просто разбейте пробел и сравните отдельные группы. Все должны быть одинаковыми, но одной числовой группой. В зависимости от типа ваших данных (CAPS, COMP, CREME, ...) вы можете игнорировать другую группу. Либо перед X, либо после CREME и т. Д. Это сильно зависит от ваших данных.

0 голосов
/ 12 января 2012

После предложения Шона Оуэна;вероятно, можно использовать Regex:

/(\w.*?)(\d+)X(\w.*)/

и группы захвата 1 и 3 должны быть равны после удаления любого пробела между ними.


  1. Spilt строки по пробелам .

  2. Сравните [0] и [1] разделенных результатов.

  3. Объедините все оставшиесяиндексы, чтобы сделать одну строку.(используйте trim перед объединением)

  4. найдите indexOf X и используйте subString до конца строки.

  5. Использованиеequals ИЛИ equalsIgnoreCase для сравнения комбинированных (под) строк.

  6. Повторите с шага 1 для каждого набора строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...