2016-07-16 43 views
-2
package nameinput;  
import java.util.Scanner; 

public class NameInput { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) {   
     Scanner user_input = new Scanner(System.in); 
     System.out.print("Please enter your value"); 
     String entered_value; 
     entered_value = user_input.next(); 

     String replace = entered_value.replace("a-z, A-Z", ""); 
     System.out.println(entered_value);    
    }   
} 

以上是我迄今爲止編寫的代碼。目前,每當我運行程序時,發生的一切都是用戶被要求輸入,然後無論輸入什麼值,都會被重複回來。因此,字符串替換不起作用,我希望刪除任何輸入的任何A-Z,a-z字符的字符串,並用空格替換它們。在java中刪除字符串中的字符

不幸的是,這是行不通的

+6

你不打印的'replace' – wakjah

+1

雖然以前的評論是真實的,那價值是不是你如何使用'replace'方法,除非你真的想要替換字符串'「az,AZ」'(包括逗號和所有內容) –

+0

好吧,那麼我將如何顯示替換...的值? –

回答

0

有兩件事似乎有點奇怪。

首先as stated by @wakjah,您不打印替換字符的字符串。您正在使用輸入的值打印字符串。

其次,我不認爲這是替代方法的工作原理。替換方法需要兩個參數:您想要替換的舊值以及您希望替換的值。 因此,entered_value.replace("a-z, A-Z", "");的含義是,如果字符串包含"a-z, A-Z"(它必須匹配整個字符串),則將其替換爲""

例如,字符串"Hello, World!"將保持不變,因爲沒有匹配整個字符串"a-z, A-Z"
"Hello a-z, A-Z is going to be replaced"將變爲"Hello is going to be replaced"

這樣做的方法是使用replaceAll方法。這需要一個正則表達式,可以用來匹配整個字母表。

+0

我以爲System.out.println(entered_value);線只是說明它已被編輯後的數據抱歉 –

+0

沒問題,我們在這裏幫助:) – OmerSakar

1

嘗試

String replace = entered_value.replaceAll("[A-Za-z]+",""); 
System.out.println(replace); 

擊穿正則表達式的:

  • [...] =字符類別匹配:匹配支架
  • AZ =速記ABC之間的任何字符.. .XYZ
  • az = abc的快速操作... zyz
  • x + =匹配一個或多個連續X(在這種情況下,X是整個括號字符類)
+1

爲什麼'*'? '+'在這裏更有意義。 – Pshemo

+2

你可能想解釋一下正則表達式對於OP –

+0

@pshemo的語法意義,謝謝你的提醒;這不是我第一次犯這個錯誤...... –