[英]Why can't I Remove WhiteSpaces in Java?
我拼命地試圖從字符串中刪除空格(后來我希望能夠將其轉換為int),但是我似乎無法正常運行。
String input;
if(GamePlay.GameStart == true){
input = Terminal.askString("Welcome to MASTERMIND! \n Please Give in Your Game Attributes \n");
input.replaceAll("\\s","");
}else
input = Terminal.askString("");
if (input.equals("Quit") || input.equals("quit")){
Quit();
}
else if(GamePlay.GameStart == true){
System.out.println(input); .......(code follows)
你能告訴我,我做錯了什么嗎? PS:我也嘗試過\\ W“和\\ S”
更換
input.replaceAll("\\s","");
與
input = input.replaceAll("\\s","");
它將起作用,因為字符串是不可變的,所以replaceAll()
不會更改您的字符串對象,它將返回一個新對象。 因此,您將變量input
分配給input.replaceAll("\\\\s","");
返回的字符串input.replaceAll("\\\\s","");
另外,您應嘗試遵循Java命名約定,並使字段和變量以小寫字母開頭。
而且,您也可以更換
if(GamePlay.GameStart == true) {
與
if(GamePlay.GameStart) {
因為在您的版本中,您將GamePlay.GameStart
的值與true
進行比較,並且僅在評估為true
時才執行if
塊,而在我的版本中,如果GamePlay.GameStart
為true
則執行ìf
塊(盡管編譯器可能對其進行了優化)無論如何)。
另一方面,您也可以替換
if (input.equals("Quit") || input.equals("quit")){
與
if (input.equalsIgnoreCase("Quit")) {
因為,我認為這很明顯。
字符串是不可變的。 您需要分配由replaceAll
返回的新創建的String
結果:
input = input.replaceAll("\\s","");
input.replaceAll("\\\\s","");
返回刪除了空格的字符串。 但是,如果不保留對它的引用,您將看不到結果。 您可能的意思是:
input = input.replaceAll("\\s","");
對於初學者來說,這是一個非常常見的錯誤。
正如其他人提到的那樣,您需要知道replaceAll
返回一個新字符串並且不更改當前字符串,因為字符串在Java中是不可變的。
因此使用:
input=input.replaceAll("\\s","");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.