[java] charが空のスペースと等しいかどうかをチェックする方法?



Answers

必要なコードは、「空き領域」が意味するものによって異なります。

  • あなたがASCII / Latin-1 / Unicodeのスペース文字(0x20)を意味するならば、SP、と:

    if (ch == ' ') {
        // ...
    }
    
  • 従来のASCII空白文字(SP、HT、VT、CR、NL)のいずれかを意味する場合は、次のようになります。

    if (ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n' || ch == '\x0b') {
        // ...
    }
    
  • Unicode空白文字を意味する場合は、次のようになります。

    if (Character.isWhitespace(ch)) {
        // ...
    }
    

Unicodeの空白には、 追加の ASCII制御コード 、上位のコードプレーンにある他のUnicode文字が含まれていることに注意してください。 Character.isWhitespace(char) javadocを参照してください。

あなたが書いたのはこれでした:

    if (Equals(ch, " ")) {
        // ...
    }

これは、いくつかのレベルでは間違っています。 まず、Javaコンパイラがそれを解釈しようとする方法は、 boolean Equals(char, String)メソッドを呼び出すことです。

  • コンパイラがエラーメッセージで報告したように、メソッドが存在しないため、これは間違っています。
  • とにかくequalsはメソッドの名前ではありません。 Javaの規約では、メソッド名は小文字で始まります。
  • あなたのコード(書かれているように)は文字と文字列を比較しようとしましたが、 charStringは比較できず、共通の基本型にキャストできません。

JavaにはComparatorのようなものがありますが、それはメソッドではなくインターフェースです。このように宣言されています:

    public interface Comparator<T> {
        public int compare(T v1, T v2);
    }

つまり、メソッド名はcompareEqualsない)、整数(ブール値ではない)を返し、typeパラメータで指定された型に昇格できる2つの値を比較します。

誰かが(削除された回答で!)彼らはこれを試してみました:

    if (c == " ")

これは2つの理由で失敗します。

  • " "は文字リテラルであり、文字リテラルではなく、JavaではString値とchar値を直接比較できません。

  • ==を使用して、文字列または文字列リテラルを比較するべきではありません。 参照型の==演算子は、オブジェクトの値ではなくオブジェクトの識別情報を比較します。 Stringの場合、異なるアイデンティティーと同じ値を持つ異なるオブジェクトを持つことが一般的です。 ==テストは、あなたがここで何をしようとしているのかという視点から、 間違った答えを与えることよくあります。

Question

ここに私が持っているものがあります:

private static int countNumChars(String s) {
    for(char c : s.toCharArray()){
        if (Equals(c," "))
    }
}

しかし、そのコードでは、そのメソッドのシンボルを見つけることができないと言います。 私はこのような比較者を持つJavaを覚えています...任意の提案?




あなたは使うことができます

Character.isWhitespace(c)

またはCharacterクラスの他の利用可能なメソッドのいずれかを使用します。

  if (c == ' ')

また動作します。




あなたが試すことができます:

if(Character.isSpaceChar(ch))
{
    // Do something...
}

または:

if((int) ch) == 32)
{
    // Do something...
}



一見すると、あなたのコードはコンパイルされません。 ネストされたif文は中括弧を持たないので、実行すべき次の行を考慮する。 また、charとStringを比較しています。 " 代わりに値をcharと比較してみてください。 私は正しい構文があると思います:

if(c == ' '){
   //do something here
}

しかし、再び、私は"Equal"クラスに精通していません




文字を比較するには、 ==演算子を使用します。

if (c == ' ')



Links