2016-03-26 4 views
1
class A{ 
private String name ; 

public A(String name){ 
    this.name = name ; 
} 


public boolean isName(String nameCheck){ 
    boolean is = true ; 
    if(nameCheck.matches(name)){ 
     return is; 
    }else return !is ; 

} 
} 
public class Test{ 
public static void main(String[] args){ 
    A object = new A("CHIU Shun Kin"); 

    System.out.println(object.isName("?HIU Sh?? ?in")); 

} 

}文字をチェックするメソッドを引数にマッチさせる方法は?

私の主な任務は、それが定義された1(変数名)が、一致するかどうかを入力された名前を確認することです「?」文字は比較されません。上記は私のコードです。私は "?"を比較しない方法を見つけることができません。キャラクター。

ここではサンプルです:

名:「CHIU旬キン」

nameCheck:?」HIUのSh ?? ?in "がtrueを返します

nameCheck:" CKIU Sh ?? ?in "はfalseを返します

+1

nameCheck.equals(name) – RE350

+0

は、forループの各文字列の文字を比較します。 –

+0

forループの疑問符をどうやって比較できないのですか? – Michael

答えて

3

Regexを使用しない簡単な方法は?あなたのパターンに等しいなら、文字列の中の1文字をチェックするか、?(この場合は可変でもよい)をチェックしてください。この方法を試してください。

public boolean isName(String check, char ch) { 

    for (int i=0; i<name.length(); i++) { 
     if (name.charAt(i) != check.charAt(i) && ch != check.charAt(i)) { 
      return false; 
     } 
    } 
    return true; 
} 

使用法:

A object = new A("CHIU Shun Kin"); 
System.out.println(object.isName("?HIU Sh?? ?in", '?')); // returns TRUE 
System.out.println(object.isName("CKIU Sh?? ?in", '?')); // returns FALSE 
+1

ありがとう、たくさんの男、あなたはそれをやった。私はあなたのコードに少し変更を加えましたが、それはまだ動作しています。 – Michael

8

正規表現を使用できます。

String regex = "?HIU Sh?? ?in".replaceAll("\\?", "."); // change your format to a regex 

boolean matches = "CHIU Shun Kin".matches(regex); 

だからあなたの場合には、あなたが

public boolean isName(String nameCheck) { 
    return name.matches(Pattern.quote(nameCheck).replaceAll("\\\\?", ".")); 
} 

Pattern.quoteを必要とするが、他の記号は特別な意味を与えられていないことを確認することです。

+0

ええと...それは私にとっては複雑すぎる、私はまだ正規表現を学んでいない。これを行う簡単な方法はありますか? – Michael

1

1)長さ 2の比較)各文字のループについては 提案名前 であれば? は偽 終わりが//一致しない場合はfalse はまだ比較

の終わりに リターン真//マッチングのマッチング//続ける返し、モデル で同じ文字を比較 他の他 //を続けます

しかし、これは正規表現では良いですが、正規表現はこのために作られていますが、最初は分かりにくいですが、これが最良の解決策です。 Web上のさまざまな 'regexp tester'でregexpをテストして、自分で試してみることができます。

2

どのように文字が引数に一致するかどうかをチェックするメソッドを記述できますか?

あなたはこの問題に学校で学ぶそれらの基本を適用したい場合は、単に与えられた名前から同じ位置にある文字を?と一致していないこれらの文字を確認して文字列を反復処理することができます:

+0

@Michael最初に文字列の長さをチェックするとよいでしょう。私の例を見てください。 – user3437460

+0

ありがとう、私はあなたのためにいくつかの基礎をしていただきありがとうございます。 – Michael

関連する問題