powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Количество найденных слов в строке
10 сообщений из 10, страница 1 из 1
Количество найденных слов в строке
    #39915519
Romantiktj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ли без цикла и придумывания целого алгоритма то есть одной функцией найти количество совпадающих слов в строке например:


int kolichestvo = строка.найти_количество_слов("Маша ищет Мишу а Миша ищет Машу", "ищет" );

результат = 2
...
Рейтинг: 0 / 0
Количество найденных слов в строке
    #39915523
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну напишите/создайте такую функцию, в чем вопрос то?
...
Рейтинг: 0 / 0
Количество найденных слов в строке
    #39915535
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Romantiktj,можно с помощью stream API
...
Рейтинг: 0 / 0
Количество найденных слов в строке
    #39915538
Romantiktj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,

Вот сижу и голову ломаю и не наю в чем причина:

Пример текста 1 String[]strArray1 = " Я поиск ты найден"
Пример текста 2 String[]strArray2 " Тест поиск и найден Результат поиск и не найден "

Результат должен быть : bb=4

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
    int bb=1;
                        //String strArray = charSequence.toString().split(" ");



                        StringTokenizer ins1 = new StringTokenizer(charSequence.toString());
                        String[]strArray1 = charSequence.toString().split(" ");
                        int cnt1 = 0;
                        while (ins1.hasMoreTokens()) cnt1++;

                        StringTokenizer ins2 = new StringTokenizer(subject1);
                        String[]strArray2 = subject1.split(" ");
                        int cnt2 = 0;
                        while (ins2.hasMoreTokens()) cnt2++;


                        for(int ii=1; ii<=cnt1; ii++) {
                            for (int jj = 1; jj <= cnt2; jj++) {

                                // if (subject1.contains(strArray[jj])) { subject.setCoeff(bb); subject.setQonun( "K-"+ subject); arrayList1.add(subject); bb++; }
                                if (strArray1[ii]==strArray2[jj]) { subject.setCoeff(bb); subject.setQonun( "K-"+ subject); arrayList1.add(subject); bb++; };
                            }
                        }
...
Рейтинг: 0 / 0
Количество найденных слов в строке
    #39915712
Фотография Valentin Kolesnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Romantiktj
Можно ли без цикла и придумывания целого алгоритма то есть одной функцией найти количество совпадающих слов в строке например:


int kolichestvo = строка.найти_количество_слов("Маша ищет Мишу а Миша ищет Машу", "ищет" );

результат = 2


Underscore-java библиотека.

Код: java
1.
2.
3.
4.
5.
6.
7.
        System.out.println(U.countBy(U.words("Маша ищет Мишу а Миша ищет Машу"),
            new Function<String, String>() {
            public String apply(String item) {
                return item;
            }
            }
        ).get("ищет"));



Хорошего вам дня!
...
Рейтинг: 0 / 0
Количество найденных слов в строке
    #39916825
Romantiktj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valentin Kolesnikov,

Спасибо , ваш обязательно попробую, нашел другое решение

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
package com.company;

import org.apache.commons.lang3.StringUtils;

import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) {
        int bb=0;
        //String strArray = charSequence.toString().split(" ");

    String    charSequence = " here bo   ";
        String    subject1 = " here here boss boss boss      ";



        String[] strArray1 = charSequence.split(" ");

        String[] strArray2 = subject1.split(" ");


        for(int ii=1; ii<charSequence.split(" ").length; ii++) {
          //  for (int jj = 0; jj <= cnt2; jj++) {
            int occ = StringUtils.countMatches( subject1 , strArray1[ii] );
            if (occ>0) {  System.out.println(occ); System.out.println(strArray1[ii]); bb=bb+occ; }

        }
        System.out.println("------------------------------Total-----------------------");
        System.out.println(bb);

    }

}



Ответ:

2
here
3
bo
------------------------------Total-----------------------
5


Только в моем случае одна проблема возникла даже если я "bo" введу будет считаться как "boss" а мне этого не надо, как быстро возможно это решить?
...
Рейтинг: 0 / 0
Количество найденных слов в строке
    #39916837
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
public class Test {
    public static void main(String[] args) {
        int bb=0;
        String    charSequence = " here bo   ";
        String    subject1 = " here here boss boss boss      ";

        String[] wordsToFind = charSequence.split(" ");
        String[] tokens = subject1.split(" ");

        int foundCnt = 0;
        for ( int i=0; i<wordsToFind.length; i++) {
           // Игнорируем пустую(ые) строки, их искать не нужно
           if ( wordsToFind[i].length()==0 ) {
               continue;
           }
           // Ищем нужное слово в разобранной строке
           for ( int j=0; j<tokens.length; j++) {
                if ( wordsToFind[i].equalsIgnoreCase( tokens[j] ) ) {
                    foundCnt ++;
                }
            }
        }

        System.out.println("------------------------------Total-----------------------");
        System.out.println( foundCnt );
    }
}


...
Рейтинг: 0 / 0
Количество найденных слов в строке
    #39916848
Romantiktj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,
Спасибо, но в вашем случае результат тот же какой и в моем:

1
here
3
bo
------------------------------Total-----------------------
4

Есть другие идеи?
...
Рейтинг: 0 / 0
Количество найденных слов в строке
    #39916850
Romantiktj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,


Соррри! Я поторопился!, У вас точный!
...
Рейтинг: 0 / 0
Количество найденных слов в строке
    #39916851
Romantiktj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,
Спасибо большое, выручили!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Количество найденных слов в строке
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]