簡體   English   中英

為什么我不能在Java中刪除空格?

[英]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.GameStarttrue則執行ì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","");

如果願意,可以使用助手插件來幫助您解決此類錯誤,例如findBugscodePro

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM