2017-08-06 5 views
0

特殊文字をスキップする必要があります。私は既にコードを書いています。しかし、それは純粋なJavaコードです。特殊文字をスキップ

String val = menuItemLabelTB.getValue(); 
    boolean spclCharecterCheck = false; 
    String specialCharacters="!#$%&'()*+,.:;[email protected][]^`{|}~"; 

    for (int i = 0; i < val.length(); i++) { 
     for (int j = 0; j < specialCharacters.length(); j++) { 
      if(val.charAt(i) == specialCharacters.charAt(j)) 
       spclCharecterCheck = true; 
     } 
    } 

regexを使用して複雑さを最小限に抑えたい場合、それは可能ですか?または、他のJava組み込み関数を使用する必要がありますか。

+0

を出力

String specialCharacters="!#$%&'()*+,.:;[email protected][]^'{|}~"; String val = "a{b}c"; String result = val .chars() .mapToObj(a -> String.valueOf((char) a)) .filter(a -> !specialCharacters.contains(a)) .reduce((t, u) -> t + u) .orElse(" "); System.out.println(result); 

はい、それは今あなたが**正規表現を習得するための時間が**であるので、あなたは、正規表現パターンを構築する方法を知っている、正規表現を使用可能です。 – Andreas

答えて

4

はい、これはPatternの正規表現で行うことができます。同様に、

abc 
+0

ありがとうございます。実際には、このJavaコードをGWTプロジェクト内でコンパイルする必要があります。パターンマッチャーを使用しているときはいつでも。コンパイルエラーが表示されます。 –

+0

['import java.util.regex.Pattern;'](https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html) –

0

を出力

// Note that the literal [](s) have to be escaped below, 
String specialCharacters = "[!#$%&'()*+,.:;[email protected]\\[\\]^`{|}~]"; 
String val = "a{b}c"; 
Pattern p = Pattern.compile(specialCharacters); 
System.out.println(p.matcher(val).replaceAll("")); 

は、あなたが文字列で削除して、不要な文字を削除するために、ストリームを使用したい文字を指定することができます。

abc 
+0

これは正常に動作しています..ありがとうございました :) –