How to change spaces to underscore and make string case insensitive?
Asked Answered
U

3

58

I have following question. In my app there is a listview. I get itemname from listview and transfer it to the webview as a string. How to ignore case of this string and change spaces to underscores?

For example: String itemname = "First Topic". I transfer it to the next activity and want to ignore case and change space to underscore (I want to get first_topic in result). I get "itemname" in webviewactivity and want to do what I've described for following code:

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

Please, help.

Untwine answered 27/2, 2012 at 7:18 Comment(0)
H
134

use replaceAll and toLowerCase methods like this:

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

Haplosis answered 27/2, 2012 at 7:22 Comment(3)
Thanks, but I have no result. I use it in activity as String itemname = bundle.getString("itemname"); itemname.replaceAll(" ", "_").toLowerCase(); And then String filename = itemname + ".html"; May be it's not right. Please, have a look.Untwine
u need to write it as itemname = itemname.replaceAll(" ", "_").toLowerCase();Favorite
@naini answered... these methods are not modifying the string they just return a new modified string so you should assign the new value.Haplosis
R
43

This works for me:

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

replaceAll("\\s+", "_") replaces consecutive whitespaces with a single underscore.

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

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

Repairman answered 7/2, 2017 at 10:30 Comment(2)
I think in most cases, your answer is better than the accepted one.Sarong
This answer covers more cases it should be the accepted oneJameljamerson
K
7

You can use the replaceAll & toLowerCase methods but keep in mind that they don't change the string (they just return a modified string) so you need to assign the back to the variable, eg.

String itemname = bundle.getString("itemname"); 
itemname = itemname.replaceAll(" ", "_").toLowerCase(); 
String filename = itemname + ".html";
Krafftebing answered 27/2, 2012 at 7:46 Comment(1)
Doh, question was answered as a comment to previous answer whilst I typed (and I guess I should have posted as a comment - new to StackOverflow)Krafftebing

© 2022 - 2024 — McMap. All rights reserved.