Вы близки.
Вы, вероятно, просто хотите:
ParseInteger
Мне было интересно, собрал ли кто-нибудь что-то или что-то подобное JavaScript parseInt для C #.
В частности, я хочу взять строку, например:
123abc4567890cs prettyprint prettyprinted ">123
и возвращает только первое действительное целое число
public static int ParseInteger( object oItem )
{
string sItem = oItem.ToString();
sItem = Regex.Replace( sItem, @"([^d])*", "" );
int iItem = 0;
Int32.TryParse( sItem, out iItem );
return iItem;
}
У меня есть статический метод, который я использовал, который будет возвращать только числа:
ParseInteger( "123abc4567890" );
Вышеизложенное:
1234567890
и верните меня
foreach (Match match in Regex.Matches(input, @"^d+"))
{
return int.Parse(match.Value);
}
Я не уверен, возможно ли это сделать с регулярным выражением, или если есть лучший способ захватить только первое целое из строки.
c#,javascript,integer,parseint,
Вот полный пример. Он будет генерировать исключение, если вы не дадите ему допустимую строку - вы можете изменить это поведение, не явно бросая исключение int.TryParse
и используя вместо этого.using System; using System.Text; using System.Text.RegularExpressions; class Test { static void Main(string[] args) { Check("1234abc", 1234); Check("-12", -12); Check("123abc456", 123); } static void Check(string text, int expected) { int actual = ParseInteger(text); if (actual != expected) { Console.WriteLine("Expected {0}; got {1}", expected, actual); } } private static readonly Regex LeadingInteger = new Regex(@"^(-?d+)"); static int ParseInteger(string item) { Match match = LeadingInteger.Match(item); if (!match.Success) { throw new ArgumentException("Not an integer"); } return int.Parse(match.Value); } }
Обратите внимание, что он также позволяет вести указатель, но не ведущий @ "^ ([^ d] +)? (+ | -)? D +". (Опять же, легко изменить.)
Также обратите внимание, что хотя у меня есть три тестовых примера для успешных ситуаций, у меня нет никаких тестовых случаев для отказа.
Наконец, он не будет соответствовать «abc123def». Если вы хотите, удалите ^ из регулярного выражения.
asb12354