我在java中有以下代码。我要搜索的是我的 a 变量中的单词 sql 但我输入了 sql 语言,它说尚未找到该单词。即使输入变量a的sql语言,如何搜索sql?我希望你能帮助我,谢谢
public static void main(String[] args) {
// TODO code application logic here
String a="sql";
int intIndex = a.indexOf("lenguaje sql");
if(intIndex == - 1){
System.out.println("palabra encontrada");
}else{
System.out.println("palabra no encontrada"
+ intIndex);
}
}
该方法
String#indexOf
将尝试查找您在文本字符串中指示的内容的全文。由于您的字符串具有值"sql"
并且您正在寻找"lenguaje sql"
,因此它不会找到它,因为没有"lenguaje "
.你试图做的事情有点强迫,也许你不应该这样做。另一方面,也许您想要做的就是查看文本字符串中是否有任何“单词”可能嵌入到字符串中。为此,您可以使用以下算法:
根据 Mariano 的评论,如果我们想通过删除空格以及任何其他不是元音或辅音的字符来评估字符串,我们使用
\\W+
来分隔字符串:该方法反过来起作用
indexOf
。您必须将该方法应用于要在其中搜索的字符串,将要搜索的文本作为参数传递。
您还可以使用
contains
:所有其他答案都是查看一个字符串是否属于另一个字符串的最快方法。但是,在搜索words时,您可能需要满足以下条件:
匹配忽略大小写。内
查找。
"palabra"
"ejemplo de ¿PaLaBrA?"
匹配整个单词。
并且它不被
"la"
视为 的一部分"dos palabras"
,但它确实与
"(la primera)"
.为此,我们将使用正则表达式
\b
,在搜索词周围使用全词边界 ( )。也就是说,它的前面或后面都没有字母、数字或下划线。例子
结果
demo en ideone.com
这样,您将能够计算第二个字符串在第一个字符串中出现的次数:
你应该做的是如下的事情。
如果我们想通过删除空格以及任何其他不是元音或辅音的字符来评估字符串,我们使用 \W+ 来分隔字符串:
使用contentEquals函数评估该词是否完全存在,而在contains 中它验证要搜索的请求的至少一个字符在字符串中。问候。