Как я могу проверить что-то без использования регулярных выражений в C #? - PullRequest
1 голос
/ 19 января 2012

Привет, как я могу проверить строку, но без использования регулярных выражений.Например, как это можно проверить: ххх / хххх, где х - это цифра?спасибо

Ответы [ 5 ]

6 голосов
/ 19 января 2012

Примерно так:

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");
5 голосов
/ 19 января 2012

Вы можете использовать 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 голосов
/ 19 января 2012

Для этого конкретного формата вы можете использовать:

bool valid =
  value.Length == 8 &&
  value.Take(3).All(Char.IsDigit) &&
  value[3] == '/' &&
  value.Skip(4).All(Char.IsDigit);
0 голосов
/ 19 января 2012

Я бы использовал .All, чтобы проверить что-то вроде этого, поэтому независимо от того, какая это строка, если в ней нет цифры, она не пройдет

    public static bool IsMyStringValid(string strValidateString)
    {
        bool boolIsValid = false;
        if (strValidateString.All(Char.IsDigit))
        {
            boolIsValid = true; 
        }
        return boolIsValid; 
    }
0 голосов
/ 19 января 2012

Попробуйте это:

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

надеюсь, что это поможет;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...