有这样的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;
}
错误是什么,有没有其他方法比我尝试更好地实现这个? 我从这里得到了这个片段code
答案 0 :(得分: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
}
答案 1 :(得分: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;
}
}
答案 2 :(得分: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 */
}