2016-07-16 24 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

の値を印刷していません文字列 '' az、AZ ''(カンマが含まれ、すべて)を置き換えない限り、 'replace'メソッドをどのように使うのでしょうか? –

+0

Ok、置換の値をどのように出力するのですか? –

答えて

0

が機能していません。

最初にas stated by @wakjahと入力すると、文字を置換した文字列は印刷されません。入力した値で文字列を印刷しています。

第2に、置換方法がどのように機能するかはわかりません。 replaceメソッドには、置き換えたい古い値と置き換えたい値の2つのパラメータがあります。 したがって、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メソッドです。これは、アルファベット全体を照合するために使用できるRegexを取ります。

+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のために説明したいと思うかもしれません。私はその大失敗を初めて作ったわけではありません... –

関連する問題