如何查看 Java 1.4 中的另一个字符串中是不是存在子字符串?

Posted

技术标签:

【中文标题】如何查看 Java 1.4 中的另一个字符串中是不是存在子字符串?【英文标题】:How do I see if a substring exists inside another string in Java 1.4?如何查看 Java 1.4 中的另一个字符串中是否存在子字符串? 【发布时间】:2010-10-15 19:30:51 【问题描述】:

如何判断子字符串“模板”(例如)是否存在于 String 对象中?

如果不是区分大小写的检查就好了。

【问题讨论】:

【参考方案1】:

String.indexOf(String)

对于不区分大小写的搜索,在 indexOf 之前的原始字符串和子字符串上都使用 toUpperCase 或 toLowerCase

String full = "my template string";
String sub = "Template";
boolean fullContainsSub = full.toUpperCase().indexOf(sub.toUpperCase()) != -1;

【讨论】:

+1 我正在删除我的答案。您的问题对这两个部分都更好。 当然,如果您打算进行大量比较,请不要忘记存储他最常用字符串的大写版本【参考方案2】:

您可以使用 indexOf() 和 toLowerCase() 对子字符串进行不区分大小写的测试。

String string = "testword";
boolean containsTemplate = (string.toLowerCase().indexOf("template") >= 0);

【讨论】:

【参考方案3】:

使用正则表达式并将其标记为不区分大小写:

if (myStr.matches("(?i).*template.*")) 
  // whatever

(?i) 开启不区分大小写,并且搜索词两端的 .* 匹配任何周围的字符(因为 String.matches 作用于整个字符串)。

【讨论】:

我喜欢正则表达式,但在那种情况下它有点矫枉过正 @CoverosGene 当我添加此代码以搜索我的 jtable 中的一列时,此代码运行良好,但有一个问题,即不是搜索字符串位的最顶部元素而是首先搜索最下面的元素?你能告诉我我做错了什么吗???【参考方案4】:
String word = "cat";
String text = "The cat is on the table";
Boolean found;

found = text.contains(word);

【讨论】:

【参考方案5】:
public static boolean checkIfPasswordMatchUName(final String userName, final String passWd) 

    if (userName.isEmpty() || passWd.isEmpty() || passWd.length() > userName.length()) 
        return false;
    
    int checkLength = 3;
    for (int outer = 0; (outer + checkLength) < passWd.length()+1; outer++) 
        String subPasswd = passWd.substring(outer, outer+checkLength);
        if(userName.contains(subPasswd)) 
            return true;
        
        if(outer > (passWd.length()-checkLength))
            break;
    
    return false;

【讨论】:

这将检查是否至少 3 个字符的子字符串(paswd)包含在另一个字符串(用户名)中

以上是关于如何查看 Java 1.4 中的另一个字符串中是不是存在子字符串?的主要内容,如果未能解决你的问题,请参考以下文章

如何判断一个字符串是不是包含 POSIX sh 中的另一个字符串?

如何判断一个字符串是不是包含 POSIX sh 中的另一个字符串?

一个jvm中的java进程是不是有可能杀死/停止另一个jvm中的另一个java进程?

字符串在 C# 中是如何工作的? [关闭]

使用一个表更新火花中的另一个表

为什么java中的string是不可变的