我正在使用indexof()
来查找子字符串。如果我的字符串不在第一个位置,它会找到我的字符串,如果我的字符串位于第一个位置则不起作用。任何人都可以提出另一种方法来找到它吗?
这是我的代码: -
public class IndexOfStr {
public static void main(String args[]) {
String s = "Niraj";
System.out.println(s);
System.out.println("indexOf(niraj, 1) -> " + s.indexOf("niraj", 1));
}}
输出: -
Niraj indexOf(niraj, 1) -> -1
我正在尝试在Excel文件中找到该字符串。
答案 0 :(得分:4)
字符串中的第一个字符是索引0,而不是索引1。
还要注意indexOf区分大小写。
我不知道你如何访问Excel文件中的数据,但是你可能想要在搜索匹配时将所有数据转换为小写,或者在搜索时使用regexp,并制作正则表达式不敏感的。
答案 1 :(得分:2)
来自docs:
返回第一次出现的字符串中的索引 指定的子字符串,从指定的索引开始。整数 返回的是最小值k,其中: k> = Math.min(fromIndex,this.length())&& this.startsWith(STR, k)如果不存在这样的k值,则返回-1。
您从索引1而不是索引0开始,因此找不到该字符串。
您可以执行s.indexOf("niraj", 0)
或s.indexOf("niraj")
答案 2 :(得分:2)
你应该从0而不是1开始。
s.indexOf("Niraj", 0);
请注意indexOf()
方法区分大小写。
答案 3 :(得分:0)
这里出现两个错误:
1)你的字符串是“Niraj”,你想找到子串“niraj”。因此,您的子字符串在给定字符串中不存在,并且您得到-1
2)您开始搜索位置1,而不是位置0,因此您的子字符串不在给定范围内。
输入正确的子字符串或调用
s.toLowerCase()。indexOf(“niraj”,0)