2014-10-06 4 views
0

Я получаю значение из формы в следующем формате:два чтения целых чисел в конце текста

text 2234-7755 

Что я хочу сделать, это прочитать первые четыре целых числа, чем последние четырех целочисленных значений в отдельности. Пожалуйста, дайте мне знать, как я могу это прочитать. Спасибо

+0

Разделить на пространстве, возьмите вторую группу, и разделить на '- '? что ты уже испробовал? –

+0

(\ d +) это даст вам две группы. – vks

+0

Имеет ли число всегда 8 цифр, разделенных '-'? –

ответ

0

Если число всегда в конце концов, имеет 8 цифр и отделяется - вам не нужно регулярное выражение:

string number = text.Substring(text.Length - 9); 
string[] both = number.Split('-'); 
int firstNum, secondNum; 
if (both.Length == 2 
    && int.TryParse(both[0], out firstNum) 
    && int.TryParse(both[1], out secondNum)) 
{ 
    Console.Write("First number is: {0}\r\nSecond number is: {1}", firstNum, secondNum); 
} 
0

использовать функцию разделения и получить первое значение.
link для того же

var original="2234-7755"; 
    var intArray = original.Split("-"); 

    int part1 = Convert.ToInt32(intArray[0]); 
    int part2 = Convert.ToInt32(intArray[1]); 

Вы также можете использовать Int32.TryParse метод, если вы хотите большего контроля.

1
string[] nums = text.Split("-"); 
int num1 = Convert.ToInt32(nums[0]); 
int num2 = Convert.ToInt32(nums[1]); 

Если вы хотите быть более безопасным, вы можете использовать int.TryParse

+4

Вероятный 'nums [2] будет вызывать индекс из исключения rage' –

+1

Это' nums [0] 'и' nums [1] ' –

+0

@ Şhȇkhaṝ woops, теперь это исправлено –

0

Вы ищете что-то вроде этого?

string text = "text 2234-7755"; 

var matches = Regex.Matches(text, @"(\d+)"); 
if (matches.Count == 2) 
{ 
    int value1 = Convert.ToInt32(matches[0].Groups[1].Value); 
    int value2 = Convert.ToInt32(matches[1].Groups[1].Value); 
} 
+0

Первоначально я думал, что RegEx был излишним, но если ОП разъясняет, какой текст может быть в «тексте», тогда это может быть полезно. – Michael

Смежные вопросы