2016-09-30 5 views
3

私はJavaでいくつかのコードを書いています。文字列内の文字が文字でも桁でもないかどうかを調べるコード行を書く方法があるかどうかを調べようとしています。数Javaで文字が文字でも数字でもないかどうかを確認するにはどうすればよいですか?

と手紙のため

Character.isLetter()チェックのために

Character.isDigit()チェック:私はそれを知っています。

しかし、これらのコードのいずれも1行のコードに含まれていないかどうかをjavaがチェックできるかどうかを知りたいと思います。文字が文字列の "/"または "*"、さらには "_"の場合と同様です。

私はJavaにとって非常に新しいので、今どこに行くのかは分かりません。

答えて

3

ブール値に評価される単一の式で両方の呼び出しを組み合わせることができます。ド・モルガンの法則によって

if (!(Character.isDigit()) && !(Character.isLetter())) { 
    //The character is neither a digit nor a letter. 
    // Do whatever 
} 

次のように、あなたも同じことを表現することができます。

if (!((Character.isDigit()) || (Character.isLetter()))) { 
    //The statement "The character is a digit or a letter" is false.  
    // Do whatever 
} 
8

Java provides a method for that - あなたがする必要があるすべてはその結果を否定することです:

if (!Character.isLetterOrDigit(ch)) { 
    ... 
} 
+2

それが1.0以降が行われています信じてすることはできません.2私はそれに気付かなかった。 (一方で、私はこれまでに使ったことはないと思う。) –

+0

素晴らしい。これと@RobertColumbiaのコードは完全に機能します。ご協力いただきありがとうございます。 –

0

文字列の文字が、文字でも digでもないかどうかをチェックするコードそれ。あなたの質問から

は、私はあなたがStringを渡し、そのStringの文字が唯一の文字と数字をしているかどうかを確認したい、または何か他のものがあることを理解しています。

あなたは、この目的のために正規表現を使用することができますし、あなたのString

[^a-zA-Z0-9]に対する出力チェック

loremipsum -> false 
loremipsum999 -> false 
loremipsum_ -> true 
loremipsum/ -> true 

入力

import java.util.regex.*; 

public class HelloWorld { 
    public static void main(String[] args) { 
     System.out.println("loremipsum -> " + checkForCharAndDigits("loremipsum")); 
     System.out.println("loremipsum999 -> " + checkForCharAndDigits("loremipsum999")); 
     System.out.println("loremipsum_ -> " + checkForCharAndDigits("loremipsum_")); 
     System.out.println("loremipsum/ -> " + checkForCharAndDigits("loremipsum/")); 
    } 

    public static boolean checkForCharAndDigits(String str) { 
     Matcher m = Pattern.compile("[^a-zA-Z0-9]").matcher(str); 
     if (m.find()) return true; 
     else   return false; 
    } 
} 
関連する問題