Гость
Форумы / Java [игнор отключен] [закрыт для гостей] / Количество найденных слов в строке / 10 сообщений из 10, страница 1 из 1
17.01.2020, 15:49
    #39915519
Romantiktj
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество найденных слов в строке
Можно ли без цикла и придумывания целого алгоритма то есть одной функцией найти количество совпадающих слов в строке например:


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

результат = 2
...
Рейтинг: 0 / 0
17.01.2020, 15:55
    #39915523
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество найденных слов в строке
ну напишите/создайте такую функцию, в чем вопрос то?
...
Рейтинг: 0 / 0
17.01.2020, 16:30
    #39915535
asv79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество найденных слов в строке
Romantiktj,можно с помощью stream API
...
Рейтинг: 0 / 0
17.01.2020, 16:38
    #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
18.01.2020, 00:02
    #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
21.01.2020, 14:45
    #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
21.01.2020, 15:05
    #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
21.01.2020, 15:31
    #39916848
Romantiktj
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество найденных слов в строке
Leonid Kudryavtsev,
Спасибо, но в вашем случае результат тот же какой и в моем:

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

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


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


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