2011-07-25 66 views
0

我正在使用indexof()來查找子字符串。它找到我的字符串,如果我的字符串不在第一個位置,如果我的字符串在第一個位置,它將無法工作。任何人都可以提出另一種方法來找到它嗎?如何在java中使用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文件中的字符串。

+2

s.indexOf( 「尼拉吉」) –

回答

4

的第一個字符的字符串是索引0,而不是索引1

難道還要注意的indexOf是區分大小寫的。

我不知道如何訪問Excel文件中的數據,但您可能希望在搜索匹配項時將所有數據轉換爲小寫,或者在搜索時使用正則表達式,並將正則表達式不區分大小寫。

2

從文檔:

返回此字符串的 指定字符串的第一個出現處的索引,開始指定索引處。返回的整數 是其中的最小值k: k> = Math.min(fromIndex,this.length())& & this.startsWith(str, k)如果不存在這樣的k值,則-1返回。

您從索引1開始而不是索引0,因此未找到該字符串。

你可以做任何s.indexOf("niraj", 0)s.indexOf("niraj")

2

你應該從0開始,而不是1

s.indexOf("Niraj", 0); 

,並請記住,indexOf()方法是區分大小寫的。

0

這裏發生了兩個錯誤:
1)您的字符串是「Niraj」,並且您想查找子字符串「niraj」。因此,您的子字符串不存在於給定的字符串中,並且您得到-1。
2)您從位置1開始搜索,而不是位置0,因此您的子串不在給定範圍內。 無論輸入正確的字符串或致電

s.toLowerCase()的indexOf( 「尼拉吉」,0)

+0

由於它工作正常。 –

+0

你應該將其中一個答案標記爲已接受。 – Maggie