получить номер из строки - PullRequest
2 голосов
/ 09 октября 2011

Как я могу получить число из следующей строки:

###E[shouldbesomenumber][space or endofline]

[] здесь только для иллюстрации, отсутствующей в реальной строке.

Я в .net 2.0.

Спасибо.

Ответы [ 2 ]

4 голосов
/ 09 октября 2011

Я бы предложил использовать регулярные выражения или строковые операции для выделения просто числовой части, а затем вызвать int.Parse, int.TryParse, decimal.Parse, decimal.TryParse и т. Д. В зависимости от типа номера нужно разобрать.

Регулярное выражение может выглядеть примерно так:

@"###E(-?\d+) ?$";

Вам, конечно, нужно будет изменить его на нецелые. Пример кода:

using System;
using System.Text.RegularExpressions;

class Test
{
    static void Main(string[] arg)
    {
        Regex regex = new Regex(@"###E(-?\d+) ?$");        
        string text = "###E123 ";

        Match match = regex.Match(text);
        if (match.Success)
        {
            string group = match.Groups[1].Value;
            int parsed = int.Parse(group);
            Console.WriteLine(parsed);
        }
    }
}

Обратите внимание, что это все еще может завершиться ошибкой с числом, которое превышает диапазон int. (Еще одна причина использовать int.TryParse ...)

2 голосов
/ 09 октября 2011
static string ExtractNumber(string text)
{
    const string prefix = "###E";
    int index = text.IndexOfAny(new []{' ', '\r', '\n'});
    string number = text.Substring(prefix.Length, index - prefix.Length);
    return number;
}

Теперь, когда ваш номер извлечен, вы можете проанализировать его или использовать как есть.

...