Как узнать, является ли данная строка подстрокой из другой строки в Java - PullRequest
6 голосов
/ 26 января 2011

Привет, я должен вычислить, является ли данная строка подстрокой большей строки.Например,

String str = "Hallo my world";
String substr = "my"

Метод «содержит» должен возвращать истину, поскольку str содержит substr (в противном случае - ложь).

Я искал что-то вроде «содержит» в классе String, но яне найти это.Я полагаю, что единственным решением является использование сопоставления с образцом.Если это тот случай, который будет лучшим (самым дешевым) способом сделать это?

Спасибо!

Ответы [ 14 ]

0 голосов
/ 02 ноября 2018

Рассмотрим следующий код:

Если подстрока присутствует, она возвращает начальный индекс подстроки в данной строке

Остальное возвращает -1

public static int isSubstring(String str, String pattern)
{
    int str_length = str.length();
    int pattern_length = pattern.length();

    for (int i = 0; i <= str_length - pattern_length; i++)
    {
        int j;

        for (j = 0; j < pattern_length; j++)
            if (str.charAt(i + j) != pattern.charAt(j))
                break;

        if (j == pattern_length)
            return i;
    }
    return -1;
}
0 голосов
/ 31 октября 2018

Пройдите этот метод. визит для хитрого кода

public static boolean isSubString(String s, String sub) {
    int count = 0;
    for (int i = 0; i < s.length(); i++) {
        if (s.charAt(i) == sub.charAt(count)) {
            count++;
        } else {
            i-=count;
            count = 0;
        }
        if (count == sub.length()) {
            return true;
        }

    }
    return false;
}
0 голосов
/ 10 августа 2018

Вы можете использовать .substring (int beginIndex, int lastIndex), чтобы проверить эту программу. Пример кода выглядит следующим образом: -

public class Test {

    public static void main(final String[] args) {
        System.out.println("Enter the first String");
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        try {
            String s1 = br.readLine();
            System.out.println("Enter the second String");
            String s2 = br.readLine();

            boolean result = isSubStr(s1, s2);
            if (result == true)
                System.out.println("The second String is substring of the first String");
            else
                System.out.println("The second String is not a substring of the first String");

        } catch (IOException e) {
            System.out.println("Exception Caught: " + e);
        }

    }

    public static boolean isSubStr(String st1, String s2) {

        boolean result = false;

        String tem_str = "";
        int len1 = st1.length();
        int i = 0;
        int j;

        while (i < len1) {
            j = i+1;
            while (j <=len1) {
                tem_str = st1.substring(i, j);
                if (tem_str.equalsIgnoreCase(s2)) {
                    result = true;
                    break;
                }
               j++;
            }

            i++;
        }
        return result;
    }
}
0 голосов
/ 07 августа 2017
public static boolean isSubstring(String s1, String s2){
    if(s1.length()<s2.length()) return false;
    if(s1.length()==s2.length()) return s1.equals(s2);
    for(int i=0;i<=s1.length()-s2.length();i++){
        if(s1.charAt(i)==s2.charAt(0)){
            int matchLength=1;
            for(int j=1;j<s2.length();j++){
                if(s1.charAt(i+j)!=s2.charAt(j)){
                    break;
                }
                matchLength++;
            }
            if(matchLength==s2.length()) return true;
        }
    }
    return false;
}

Проверяет, является ли s2 подстрокой s1.

...