如何将空格改为下划线并使字符串不区分大小写?

56

我有一个问题。在我的应用程序中有一个列表视图。我从列表视图中获取项目名称并将其作为字符串传输到webview中。如何忽略该字符串的大小写并将空格更改为下划线?

例如:String itemname =“First Topic”。我将其传输到下一个活动中,并希望忽略大小写并将空格更改为下划线(我希望在结果中获得first_topic)。 我在webview活动中获取“itemname”并想要执行以下代码所述的操作:

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

请帮忙。

3个回答

132

使用replaceAlltoLowerCase方法,可以这样做:

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


谢谢,但我没有结果。我在活动中使用它,如下:String itemname = bundle.getString("itemname"); itemname.replaceAll(" ", "_").toLowerCase(); 然后 String filename = itemname + ".html"; 可能不正确,请看一下。 - Sabre
4
你需要写成这样:itemname = itemname.replaceAll(" ", "_").toLowerCase(); - everconfusedGuy
1
@naini回答道...这些方法并没有修改字符串,它们只是返回一个新的修改后的字符串,所以你应该将新值赋给它。 - shift66

39

这对我有效:

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

replaceAll("\\s+", "_")用一个下划线替换连续的空格。

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

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


3
我认为在大多数情况下,你的答案比被采纳的更好。 - Al-Mothafar
这个答案涵盖了更多的情况,应该被接受。 - thermz

6

您可以使用replaceAll和toLowerCase方法,但请注意它们不会改变字符串(它们只返回一个修改后的字符串),因此您需要将其赋回给变量,例如:

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

哎呀,当我在打字的时候,问题已经被回答为先前答案的评论了(我想我应该把它发布为评论 - 我是 StackOverflow 的新手)。 - Zarius

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接