2017-02-24 15 views
0

文字列を解析してガベージ文字を取り除こうとしています。この例では&、%、$、#、*、@などです。私はまた、正規表現と.matchesを(使用してみました複数の引数を持つ区切り文字を使用する方法

public TokenIter(String line){ 
    line.trim(); 
    Scanner scr = new Scanner(line); 

    String built = ""; 
    scr.useDelimiter("[^A-Za-Z]+|^)|^(|^ "); 
    while (scr.hasNext()){ 
     built+= scr.next(); 
    } 
this.line = built.trim(); 

)が、いくつかのために:しかし、私は今、私は文字列に区切り文字を使用していますし、それだけのオフ文字列を構築し、スペースや括弧を維持したいですスキャナーを壊した理由。区切り文字を設定する方法についての助けがあれば幸いです!

+0

(ビルド+ = scr.next()。replaceAll( "regex"、 ""); ' – XtremeBaumer

答えて

1

を使用して正規表現を受け取り、すべての正規表現を所定の文字列に置き換えることができます。 \\%| | \\%| \\ $ | \\#| \\ * | \\そうしないすべての文字に `@` \\&:あなたはこのような正規表現を構築することができます

public void TokenIter(String line) { 
    this.line = line.trim().replaceAll("[&%$#*@]+", ""); 
} 
+0

Javaのためにエスケープされない限り、それらの文字のどれもエスケープする必要はありません。 '[] 'の中で、一般的にエスケープする必要があるのは'] 'とバックスラッシュだけです。 –

+0

ありがとう!あなたは正しい、更新されました。 –

+1

この答えにつきまとうかもしれない人のために、ハイフンも更新しています。ハイフンは常に開始または終了または文字クラスにあるか、またはエスケープされている必要があります。そうでなければ、予測不可能な混乱を招きます。恥のOPは感謝の言葉に戻ったことはない、+1は私のものです。 –

関連する問題