8
votes

Recherche de sous-chaîne en Java

J'ai un problème avec la comparaison des chaînes. Par exemple, il existe cette chaîne: xxx

Je veux rechercher si cette chaîne contient "World". J'ai utilisé des fonctions suivantes, mais ils ont des problèmes. J'ai utilisé string.indexof () mais si je vais essayer de rechercher "W", il dira qu'il existe exister.

En bref, je pense que je recherche une comparaison exacte. Y a-t-il une bonne fonction dans Java?

Y a-t-il également une fonction dans Java qui peut calculer la base de journal 2?


2 commentaires

@agazerboy - Ne mettez pas deux questions totalement non liées dans une question.


Donc, dans le cas "W", vous attendez quelque chose qui retourne faux parce que ce n'est pas un mot complet?


6 Réponses :


26
votes

Je suppose que les problèmes que vous rencontrez avec Indexof () code> sont liés à vous à l'aide de la version du personnage (sinon, pourquoi rechercheriez-vous W lorsqu'il recherche du monde?). Si oui, indexofof () code> peut prendre un argument de chaîne pour rechercher: xxx pré>

comme pour la base de journal 2, c'est facile: P>

public static double log2(double d) {
  return Math.log(d) / Math.log(2.0d);
}


3 commentaires

J'explore chaque chaîne pour faire une sorte de comparaison de mon application. Un peu de temps, il obtient également un seul caractère afin qu'il crée ces problèmes. Si je veux passer des arguments par moi-même, je sais que je peux passer une chaîne. Mais c'est au moment de l'exécution. Pouvez-vous s'il vous plaît une autre solution?


Ou vous pouvez également dire que je cherche une organisation dans une chaîne et au moment de l'exécution, il obtiendra l'arugment "ou" à nouveau, il dira oui.


Désolé, je ne comprends pas vraiment ce que vous essayez de faire. Peux-tu expliquer?



9
votes

Pour une comparaison exacte de la chaîne, vous pouvez simplement faire:

boolean contains = string.contains(substring);


0 commentaires

0
votes

hi ma version est comme ci-dessous:

package com.example.basic;

public class FindSubString {


    public String findTheSubString(String searchString, String inputString){


        StringBuilder builder = new StringBuilder(inputString);

        System.out.println("The capacity of the String " + builder.capacity());

        System.out.println("pos of" + builder.indexOf(searchString));

        return builder.substring(builder.indexOf(searchString),builder.indexOf(searchString)+searchString.length());
    }

    public static void main(String[] args) {

        String myString = "Please find if I am in this String and will I be found";
        String searchString = "I am in this String";

        FindSubString subString = new FindSubString();

        boolean isPresent = myString.contains(searchString);

        if(isPresent){

        System.out.println("The substring is present " + isPresent + myString.length());

        System.out.println(subString.findTheSubString(searchString,myString));
        }
        else 
        {
            System.out.println("The substring is ! present " + isPresent);

        }
    }
}


0 commentaires

0
votes

J'ai enfin la solution. XXX PRE>

Remplacez le code ci-dessus avec celui-ci: strong> p>

public void onTextChanged(CharSequence s, int start, int before, int count) {

                        ArrayList<HashMap<String, String>> arrayTemplist = new ArrayList<HashMap<String, String>>();
                        String searchString = mEditText.getText().toString();
                        if(searchString.equals("")){new DownloadJSON().execute();}

                    else{


                    for (int i = 0; i < arraylist.size(); i++) {
                        String currentString = arraylist.get(i).get(MainActivity.COUNTRY);
                        if (currentString.toLowerCase().contains(searchString.toLowerCase())) {
    //pass the character-sequence instead of currentstring

                            arrayTemplist.add(arraylist.get(i));
                        }
                    }
                        }
                        adapter = new ListViewAdapter(MainActivity.this, arrayTemplist);
                        listview.setAdapter(adapter);

                }


            });


1 commentaires

C'est mieux lorsque vous expliquez également ce que vous avez changé dans le nouveau code et pourquoi cela aiderait.



1
votes

Vous pouvez utiliser

String s = "hello world i am from heaven";
if (s.contains("world")) System.out.prinln("It exists!!!!!!!");


0 commentaires

0
votes

suppose que vous avez une chaîne ci-dessous:

boolean is_Contains = sampleS.contains("world");
// OR
boolean is_Contains = (sampleS.indexOf("world") != -1);


0 commentaires