J'ai un problème avec la comparaison des chaînes. Par exemple, il existe cette chaîne: Je veux rechercher si cette chaîne contient "World". J'ai utilisé des fonctions suivantes, mais ils ont des problèmes. J'ai utilisé En bref, je pense que je recherche une comparaison exacte. Y a-t-il une bonne fonction dans Java? P> Y a-t-il également une fonction dans Java qui peut calculer la base de journal 2? P> P> string.indexof () code> mais si je vais essayer de rechercher "W", il dira qu'il existe exister. P>
6 Réponses :
Je suppose que les problèmes que vous rencontrez avec comme pour la base de journal 2, c'est facile: P> 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: public static double log2(double d) {
return Math.log(d) / Math.log(2.0d);
}
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?
Pour une comparaison exacte de la chaîne, vous pouvez simplement faire:
boolean contains = string.contains(substring);
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);
}
}
}
J'ai enfin la solution. 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);
}
});
C'est mieux lorsque vous expliquez également ce que vous avez changé dans le nouveau code et pourquoi cela aiderait.
Vous pouvez utiliser
String s = "hello world i am from heaven";
if (s.contains("world")) System.out.prinln("It exists!!!!!!!");
suppose que vous avez une chaîne ci-dessous:
boolean is_Contains = sampleS.contains("world");
// OR
boolean is_Contains = (sampleS.indexOf("world") != -1);
@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?