web-dev-qa-db-fra.com

Comment changer les espaces pour souligner et rendre la chaîne insensible à la casse?

J'ai la question suivante. Dans mon application, il y a une liste. J'obtiens le nom de l'élément de listview et le transfère à la webview sous forme de chaîne. Comment ignorer la casse de cette chaîne et changer les espaces en traits de soulignement?

Par exemple: String itemname = "First Topic". Je le transfère à l'activité suivante et je veux ignorer la casse et changer l'espace pour souligner (je veux obtenir first_topic en conséquence). J'obtiens "itemname" dans webviewactivity et je veux faire ce que j'ai décrit pour le code suivant:

String filename = bundle.getString("itemname") + ".html";

S'il vous plaît, aidez.

37
Sabre

utilisez les méthodes replaceAll et toLowerCase comme ceci:

myString = myString.replaceAll(" ", "_").toLowerCase()

94
shift66

Cela fonctionne pour moi:

itemname = itemname.replaceAll("\\s+", "_").toLowerCase();

replaceAll("\\s+", "_") remplace les espaces blancs consécutifs par un seul trait de soulignement.

"first topic".replaceAll("\\s+", "_") -> first_topic

"first topic".replaceAll(" ", "_") -> first__topic

13
ChrisO

Vous pouvez utiliser les méthodes replaceAll & toLowerCase mais gardez à l'esprit qu'elles ne changent pas la chaîne (elles renvoient juste une chaîne modifiée), vous devez donc affecter le retour à la variable, par exemple.

String itemname = bundle.getString("itemname"); 
itemname = itemname.replaceAll(" ", "_").toLowerCase(); 
String filename = itemname + ".html";
6
Zarius