web-dev-qa-db-ja.com

スペースをアンダースコアに変更し、文字列の大文字と小文字を区別しないようにするにはどうすればよいですか?

次の質問があります。私のアプリにはリストビューがあります。リストビューからアイテム名を取得し、文字列としてウェブビューに転送します。この文字列の大文字と小文字を無視してスペースをアンダースコアに変更するにはどうすればよいですか?

例えば: String itemname = "First Topic"。次のアクティビティにそれを転送し、大文字小文字を無視してスペースをアンダースコアに変更したい(first_topic 結果として)。 webviewactivityで「itemname」を取得し、次のコードについて説明したことを実行したい:

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

助けてください。

37
Sabre

次のようなreplaceAllおよびtoLowerCaseメソッドを使用します。

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

94
shift66

これは私のために働く:

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

replaceAll("\\s+", "_")は、連続する空白を単一の下線で置き換えます。

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

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

13
ChrisO

ReplaceAllおよびtoLowerCaseメソッドを使用できますが、これらは文字列を変更しないため(変更された文字列を返すだけです)、変数にバックを割り当てる必要があることに注意してください。

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