繁体   English   中英

检查字符串是否包含由空格分隔的子字符串

[英]Check if String is contains substring separated by spaces

我有两个字符串str,str2。 两个字符串都有空格。 我使用了contains方法,但它不适合这里,因为它只检查确切的字符。 如何在这里检查一个字符串是否是子字符串。

我已经使用下面的代码实现了它。 因此,如果原始字符串中存在字符串“FOO BAR”,则代码中的函数会打印 true。

public static void main(String[] args) {
        String str = "FOO BAR";
        String str1 = "FOO T BAR";
        String orignialString;
        String stringToMatch;
        if (str1.length() > str.length()) {
            orignialString = str1;
            stringToMatch = str;
        } else {
            orignialString = str1;
            stringToMatch = str;
        }
        boolean flag = false;
        String[] stringarr = stringToMatch.split(" ");
        for (int i = 0; i < stringarr.length; i++) {
            if (orignialString.contains(stringarr[i])) {
                flag = true;
            } else {
                flag = false;
                break;
            }
        }
        System.out.println("IS SUBSTRING---> " + flag);            
    }

我正在寻找使用模式匹配器/正则表达式的更干净的短代码。

此答案假设您要将FOO BAR标识为FOO T BAR的子字符串,因为前者的所有单词也都作为后者的单词出现。 使用这个逻辑,我们可以从两个字符串中的每一个中形成单词列表,然后迭代以检查所有单词是否存在。

boolean isSub = true;
String str = "FOO T BAR";
String str1 = "FOO BAR";
List<String> strList = Arrays.asList(str.split("\\s+"));
List<String> strSubList = Arrays.asList(str1.split("\\s+"));
for (String sub : strSubList) {
    if (!strList.contains(sub)) {
        isSub = false;
    }
}

System.out.println("input is a substring: " + isSub);

演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM