2013-11-26 116 views
1

我試圖刪除字符串中的所有空格使用replaceAll(" ", ""),但任何文本如"hello world"將刪除不僅空間,但空間後的文本 - 我的意思是,我最終只與"hello"而不是"helloworld"。我究竟做錯了什麼?replaceAll(「」,「」)在空格「」後刪除字符串中的所有文本?

public static void main (String [] args) { 
      String input; 
      Scanner console = new Scanner(System.in); 

      System.out.print("enter text: "); 
      input = console.next(); 
      System.out.println(); 

      input.replaceAll(" ", ""); 
      System.out.println(input); 
    } 
+8

它不應該是,我想剛纔它的正常工作。你能告訴我們你的代碼嗎? 'System.out.println(「Hello World」.replaceAll(「」,「」));'打印我'HelloWorld' –

+1

這是一個工作示例http://ideone.com/gGpIIZ –

+0

您是否期望它能夠在地點? –

回答

2

你必須重新分配給您的變量(或到一個新的):

input = input.replaceAll(" ", ""); 

字符串是不可變的,這意味着它們不能被改變。 replaceAll()做的是創建一個新的字符串。因此,爲了使用它,你必須把它分配給一個變量。

您只看到Hello的原因是因爲您使用的是scanner.next()而不是scanner.nextLine()

前者只會取第一個標記,直到達到分隔符(標準:空格)。後者將考慮一個結束字符(在windows中:\r\n,輸入)作爲其分隔符。

你工作的代碼如下所示:

public static void main (String [] args) { 
     String input; 
     Scanner console = new Scanner(System.in); 

     System.out.print("enter text: "); 
     input = console.nextLine(); // Change here 
     System.out.println(); 

     input = input.replaceAll(" ", ""); // Change here 
     System.out.println(input); 
} 
+0

nextLine()做到了!非常感謝你!! – user2954470

相關問題