如何在不使用C#中的正则表达式的情况下验证某些内容?

时间:2012-01-18 22:37:05

标签: c# validation

我如何验证字符串,但不使用正则表达式。例如,如何验证这个:xxx / xxxx其中x是一个数字?感谢

5 个答案:

答案 0 :(得分:6)

类似的东西:

bool ValidateExpression(string expression)
{
    string[] parts = expression.Split("/");

    if (
        parts.Length != 2
        || parts[0].Length != 3
        || parts[1].Length != 4
    ) return false;

    int parsed;
    return Int32.TryParse(parts[0], out parsed) && Int32.TryParse(parts[1], out parsed);    
}

稍后用作

bool isValid = ValidateExpression("123/4567");

答案 1 :(得分:5)

您可以使用Char.IsDigit检查字符是否为数字。对于您的具体情况,您可以这样做:

public bool IsMyStringValid(string myString)
{
  foreach(var c in myString)
    if(!Char.IsDigit() && !c == '/') return false;

  return true;
}

这实际上更具体针对您的情况(3位数,索引3处的一个'/',后跟4位数字):

public bool IsMyStringValid(string myString)
{
  if(myString.Length != 8) return false;

  for(var i = 0; i <8, i++)
    if(!Char.IsDigit(myString[i]) || (i == 3 && myString[i] == '/') return false;

  return true;
}

答案 2 :(得分:2)

对于该特定格式,您可以使用:

bool valid =
  value.Length == 8 &&
  value.Take(3).All(Char.IsDigit) &&
  value[3] == '/' &&
  value.Skip(4).All(Char.IsDigit);

答案 3 :(得分:0)

试试这个:

    public bool ValidateString(string str)
    {
        var strArr = str.Split('/');
        return strArr[0].All(char.IsDigit) && strArr[1].All(char.IsDigit);
    }
希望这有帮助;

答案 4 :(得分:0)

我会使用.All来检查这样的东西,所以无论字符串是什么 如果其中有非数字,则不会传递

    public static bool IsMyStringValid(string strValidateString)
    {
        bool boolIsValid = false;
        if (strValidateString.All(Char.IsDigit))
        {
            boolIsValid = true; 
        }
        return boolIsValid; 
    }