2016-10-18 10 views
1

C#とXamarinの新機能です。私は検証に取り組んでいます。 AndroidのEditTextを検証しようとしています。だから私はpattern.matches()のAndroidメソッドを使用して検証しています。Pattern.Matches()はxamarinでは機能しません

と私はusing Java.Utils.Regex.Patternを使用しますが、コンパイラはそれを受け入れ、次のエラーが表示されていません。

Error : Pattern is ambiguous refernce between Android.OS.Pattern and Java.Utils.Regex.Pattern .

コード:

public static bool isValid(EditText edittext, string regex, string errMsg, bool required) 
{ 
    string text = edittext.Text.ToString(); 
    edittext.Error = null; 

    if (required && !hasText(edittext)) 
     return false; 

    if (required && !Pattern.matches(regex, text)) 
     edittext.Error = "Is not valid"; 

    return true; 
} 

を更新:

using Android.OS; 

上記の名前スペースはcomplesuryが必要です。なぜなら、Androidはその名前空間にビルドされているのでエラーになります。その名前空間を削除します。Bundleエラーが出ます。

protected override void OnCreate(Bundle savedInstanceState) 
{ 
    base.OnCreate(savedInstanceState); 
    SetContentView(Resource.Layout.Activity_register); 
} 

とも

using Java.Util.Regex.PatternはXamarinにインポートされていません。

この問題を解決するにはどうすればよいですか。

+0

*関連する*コードをすべて明記してください。私はあなたが使用しているクラスの完全修飾名を提供する必要があると思います。 –

+0

@WiktorStribiżew質問を更新する – Ironman

+0

はい、 'Pattern'を' Java.Utils.Regex.Pattern'または 'Android.OS.Pattern'に置き換えて、動作するかどうか確認してください。または、 '!Pattern.matches(regex、text)'を 'text.matches(regex)'に置き換えてみてください( 'text'がjava.lang.Stringの場合) –

答えて

2

使用しているクラスの完全修飾名を指定することができます。

使用

if (required && !Java.Util.Regex.Pattern.Matches(regex, text)) 
       ^^^^^^^^^^^^^^^^ 

代わりの

if (required && !Pattern.Matches(regex, text)) 
+0

魅力のように働くThanx。 – Ironman

3

あなたは完全修飾名を使用したくない場合は、あなたも

using Pattern = Java.Util.Regex.Pattern; 

を使用してこれを使用することができますし、次に書きます。

if (required && !Pattern.Matches(regex, text)) 
+0

ありがとうございます。仕事も.. – Ironman

関連する問題