0

このようなphpコードがあり、それをC#に変換します。

function isValid($n){
if (preg_match("/\d+/",$n) > 0 && $n<1000) {
    return true;
}
return false;
}

ここに私の試みがありますが、エラーが表示されますエラーは「クラス、デリゲート、列挙型、インターフェイス、または構造体エラーC#が予想されます」

public string IsValidate(string Item)
{
    string Result = Item;
   try
{
Result = System.Text.RegularExpressions.Regex.Replace(InputTxt, @"(\\)([\000\010\011\012\015\032\042\047\134\140])", "$2");
}
catch(Exception ex)
{
console.WriteLine(ex.Message)
}
return Result;
}

エラーは何ですか、これを実装する他の方法は私の試みよりも優れていますか? ここのコードからこのスニペットを取得しました

4

3 に答える 3

4

クラス/構造体内でこのメソッドを定義していないため、このエラーが発生します。このメソッドはクラス内で定義できます。

public class MyValidator
    {
        public string IsValidate(string Item)
        {
          //Your code here
        }

    }

後で次のように使用できます。

MyValidator validator = new MyValidator();
validator.IsValid("Your string");

また、ステートメントの最後にセミコロンがありませんConsole.Write。さらに、コンソールの「c」は大文字にする必要があります

編集:
あなたのphpコードでは、渡された文字列が整数であり、1000未満であるかどうかを確認しようとしているように見えるのでint.TryParse、次のように使用できます。

public class MyValidator
{
    public bool IsValidate(string Item)
    {
        string Result = Item;
        int val;
        if (int.TryParse(Item, out val) && val > 0 && val < 1000)
        {
            return true;
        }
        else
        {
            return false;
        }

    }
}

あなたの主な方法であなたはすることができます:

 static void Main()
        {
            MyValidator validator = new MyValidator();
            Console.WriteLine(validator.IsValidate("asdf123")); // This will print false
            Console.WriteLine(validator.IsValidate("999")); //This will print true
            Console.WriteLine(validator.IsValidate("1001")); //This will print false
         }
于 2012-06-13T04:19:23.927 に答える
3

C#では、メソッドをクラスまたは構造体の内部に配置する必要があります。

public class Validator {
  public string IsValidate(string item) {
   ...
  }
}

この場合、私はおそらくそれを次のように翻訳します:

public static class Validator {   
  public static bool IsValid(string item) {
    int value;
    return int.TryParse(item, out value) 
           && value > 0 && value < 1000;    
  } 
}
于 2012-06-13T04:20:20.077 に答える
2

関数を呼び出す前にそのインスタンスを作成する必要がないように、静的クラス内で関数を定義できます。お気に入り、

public static class Validator
{
    public static string IsValidate(string item)
    {
        // ...
    }
}

次に、次を使用して呼び出すことができます。

Validator.IsValidate("String to validate")

編集:次に、次のようにして、関数が期待どおりに返されていることを確認できます。

if(Validator.IsValidate("String to validate") == "Expected result") 
{ 
    /* Logic to be executed here */ 
}
于 2012-06-13T04:25:56.897 に答える