2012-06-13 2 views
0

имеют такой код php, который преобразует его в C#.ожидаемый класс, делегат, enum, интерфейс или ошибка структуры. 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; 
} 

Что такое ошибка, Есть ли другой способ реализации это лучше, чем моя попытка? Я получил этот фрагмент отсюда code

+0

Может вы объясните, что вы пытаетесь сделать. Вы пытаетесь заменить цифры значением из переменной Item? – fenix2222

ответ

4

Этот метод не определен внутри класса/структуры, поэтому вы получаете эту ошибку. Вы можете определить этот метод внутри класса.

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

    } 

Позже вы можете использовать его как:

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

Также отсутствует точка с запятой в конце Console.Write заявления, а также «с» для консоли должны быть в верхнем регистре

Редактировать :
Поскольку в вашем 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 
     } 
+0

Как поставить здесь условие If? – TechGuy

+0

@ChathuraRanasinghe, вы проверяете, содержит ли ваша строка только числа и меньше 1000? – Habib

+0

Да., Тогда как я могу это сделать? – TechGuy

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;  
    } 
} 
+0

Как поставить здесь условие If? – TechGuy

2

Вы можете определить свою функцию внутри статического класса, так что вам не нужно создавать экземпляр этого объекта перед вызовом функции. Мол,

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

Затем, вы можете вызвать его с помощью:

Validator.IsValidate("String to validate") 

EDIT: Затем можно проверить, что функция возвращает то, что вы ожидаете, выполнив:

if(Validator.IsValidate("String to validate") == "Expected result") 
{ 
    /* Logic to be executed here */ 
} 
+0

Как поставить здесь условие If? – TechGuy

+0

В типичном сценарии я ожидаю, что метод проверки вернет bool (true или false). Но в любом случае вы все равно можете применить оператор if, например ** if (Validator.IsValidate («String to validate») == «Ожидаемый результат») {/ * Логика, которая будет выполнена здесь * /} ** –

+0

Пожалуйста, обновите свой код. – TechGuy

Смежные вопросы