2011-07-25 4 views
0

J'utilise indexof() pour trouver une sous-chaîne. Il trouve ma chaîne si ma chaîne n'est pas en première position, si ma chaîne est à la première position, cela ne fonctionnera pas. Quelqu'un peut-il suggérer une autre façon de le trouver?Comment utiliser la méthode Indexof() dans Java

Voici mon code: -

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)); 


}} 

Sortie: -

Niraj indexOf(niraj, 1) -> -1 

Je suis en train de trouver la chaîne dans mon fichier Excel.

+2

s.indexOf ("Niraj") Merci –

Répondre

4

Le premier caractère est une des chaînes à l'index 0, et non l'index 1.

Prenez note également que indexOf est sensible à la casse. Je ne sais pas comment vous avez accès aux données dans le fichier Excel, mais vous voulez probablement soit convertir toutes les données en minuscules lorsque vous recherchez une correspondance, ou utiliser regexp lors de la recherche, et faire l'expression rationnelle insensible à la casse.

2

de docs:

Renvoie l'index dans cette chaîne de la première occurrence de la sous-chaîne spécifiée , à partir de l'index spécifié. L'entier retourné est la plus petite valeur k pour laquelle: k> = Math.min (fromIndex, this.length()) & & this.startsWith (str, k) Si aucune valeur de k n'existe, alors -1 est retourné.

Vous avez démarré à partir de l'index 1 au lieu de l'index 0, donc la chaîne n'a pas été trouvée.

Vous pouvez faire soit s.indexOf("niraj", 0) ou s.indexOf("niraj")

2

Vous devriez commencer de 0 plutôt que 1.

s.indexOf("Niraj", 0); 

et s'il vous plaît garder à l'esprit que la méthode indexOf() est sensible à la casse.

0

Deux erreurs se produisent ici:
1) Votre chaîne est "Niraj", et vous souhaitez trouver la sous-chaîne "niraj". Par conséquent, votre sous-chaîne n'existe pas dans la chaîne donnée et vous obtenez -1.
2) Vous commencez à chercher à la position 1, et non à la position 0, donc votre sous-chaîne ne se trouve pas dans la plage donnée. Entrez alors substring correct ou appelez

s.toLowerCase(). IndexOf ("Niraj", 0)

+0

il fonctionne très bien. –

+0

vous devez marquer l'une des réponses comme acceptée. – Maggie

Questions connexes