2016-04-03 56 views
0

我正在使用UDP,现在我正在捕获从传感器发出的信息。我试图从信息发送中只提取数字,这是温度,光线和运动,并试图用正则表达式来实现。但是我得到一个FormatException,指出:“其他信息:输入字符串的格式不正确”。下面是代码:Regex.Match引发FormatException

UdpClient udpClient = new UdpClient(1337); 
IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, 0); 

while (true) 
{ 
    for (int i = 0; i < 5000; i++) 
    { 
     Byte[] receive = udpClient.Receive(ref endPoint); 
     string receiveDat = Encoding.ASCII.GetString(receive); 
     string result = Regex.Match(receiveDat, @"\D+").Value; 

     Console.WriteLine(Int32.Parse(result)); 
     Console.ReadLine(); 
    } 
} 
+0

'Regex.Match'不会抛出异常。它的'Int32.Parse'引发了这个异常。 '\ d'取数字,'\ D'取非数字。所以将'\ D +'改为'\ d +'....'while(true)'为什么? –

+0

@ M.kazemAkhgary为什么你在评论中发布答案?我看到你甚至发布了这个答案并将其删除。我认为评论的目的不是提供简短的答案,而是讨论不直接提供答案的要点。你有不同的看法吗? – BlueMonkMN

+0

@BlueMonkMN那是真的。但我只是回答了部分问题。如果你看循环,你会发现它是完全错误的,没有任何意义。 –

回答

0

你需要,如果你想要的数字,而不是非数字字符使用小写\d在你的正则表达式。首都\D只匹配非数字。